[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA:オーバーフローについて』(さんちゃん)
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 こうしてやってみるとどうなるかな。
はずしていたらごめん。
(ぶらっと)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.