[[20120519211220]] 『VBA:オーバーフローについて』(さんちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:オーバーフローについて』(さんちゃん)
いつもお世話になっております。
エクセル 2010&2000
OS win7&XP

Private Sub ComboBox8_Change()
Dim sekei As String
Dim LO As Integer
Dim shM As Worksheet
Dim KAI As Long, MKAI As Long

Set shM = Sheets("問題点記録表")

''''''''設計担当者から問題点未回答リストをLabel37へ表示

sekei = ComboBox8.Text
LO = shM.Range("H65536").End(xlUp).Row '''''H(問題点最終行

MKAI = 0
KAI = 0

 For K = 1 To LO
  If shM.Cells(K + 9, 18) = sekei Then
            KAI = KAI + 1                         '''''KAI=担当者問題点総数
       JO = shM.Cells(K + 9, 1).Text
    If shM.Cells(K + 9, 17) = "" Then
        MKAI = MKAI + 1                            ''''MKAI=担当者未回答数
        UserForm2.Label2.Caption = UserForm2.Label2.Caption & vbCrLf & JO
    End IF  
  End If
 Next K
      On Error Resume Next
  Label50.Caption = Format((KAI - MKAI) / KAI * 100, "0.0") & "%" '''''回答率

   以下省略 

UserFormに配置してあるものですが、comubobox8の表示が切り替わった時に、H行の最終段数を検索し、入力された人名(sekei 18列)の総数を拾い、その隣(17列)に記載がない場合を拾い出して回答率を求めています。入力のトリガーは、CommandButton5_Clicです。
リアルタイムに拾い出したくComboBox8_Changeで行っていますが、作っている私もここで問題が発生するのではないかと考えていました。それは、1回目の入力は問題なく動作しますが、CommandButton5で入力後、続けて入力していくと、ComboBox8を選択したところで「実行エラー6 オーバーフローしました」と表示されました。エラー発生は Label50.Caption = Format・・・・です。XXXX_Changeでの危険性は空欄になった時もイベントが発生することなど、痛い目を見ています。よくわからないのですがエラーを回避すべく、On Error 0 /On Error Resume Next 等で回避できるのかと思い記載していますが、回答率は変更されません。
書き込みの補足がうまく表現できませんが、どなたか解決策を教えていただけないでしょうか?


 コードはよく読んでいないけど、
エラーが発生したとき、マウスをKAI および MKAI にあてて、ポップアップされる値を教えてくれる?

 それと、下手な鉄砲数打ちゃ当たるということで
Dim KAI As Double
Dim MKAI As Double
こうしてやってみるとどうなるかな。

 はずしていたらごめん。

 (ぶらっと)

(ぶらっと)様、今夜もお付き合い頂きありがとうございます。
Doubileは現象変わりませんでした。
「マウスをKAI および MKAI にあてて、ポップアップ」方法がよくわかりません。でもローカルで見たところKAI,MKAI共に0でした、だから計算できないんですね、回答率の前に、 IF KAI=0 ExitSubで、対応できそうです。
貴重なお時間ありがとうございました。
今後ともよろしくお願いいたします。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.