| 
    
     |  | ちなみにソースはこちらです。 
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 
 Dim lngOpeTime     As Long         ' 運転時間
 Dim lngAveSpeed     As Long         ' 平均速度
 
 
 ' 処理開始
 On Error GoTo ErrorHandler
 
 ' 運転時間取得
 lngOpeTime = Sheets(MAIN_SHEET).Range("celOpeTime").Value
 
 
 '---値チェック---
 If Sheets(MAIN_SHEET).Range("celOpeTime").Value <> 0 Then
 ' 総巻長が0以下だった場合
 If glngTotalLength <= 0 Then
 ' 総巻長 = 0の場合 -> 計算不可
 'メッセージボックス出力
 MsgBox "総巻長が 0(m) または 0(m)以下 のため、平均速度が算出できません。", vbInformation, "平均速度算出"
 
 Exit Sub
 End If
 
 
 ' 運転時間が数値入力された場合
 If IsNumeric(lngOpeTime) = True Then
 ' 運転時間が0入力でない場合
 If lngOpeTime > 0 Then
 ' 平均速度を算出
 lngAveSpeed = glngTotalLength / lngOpeTime
 ' 平均速度を表示
 Sheets(MAIN_SHEET).Range("celAveSpeed").Value = lngAveSpeed
 →正常入力した場合、ココにくるんですが、ここで、また先頭に戻り、ずーっとloopするんです!
 Exit Sub
 Else
 ' 運転時間が0以下入力の場合 -> 計算不可
 'メッセージボックス出力
 MsgBox "運転時間項目には、0より大きい数値を入力して下さい。", vbInformation, "平均速度算出"
 
 Exit Sub
 End If
 Else
 ' 運転時間が数値入力でない場合 -> 計算不可
 'メッセージボックス出力
 MsgBox "運転時間項目には、数値を入力して下さい。", vbInformation, "平均速度算出"
 
 Exit Sub
 End If
 End If
 
 Exit Sub
 
 ErrorHandler:
 
 ' エラー処理
 gErrMsgOutPut "Worksheet_Change", Err.Description
 
 End Sub
 
 |  |