割り込み計算、再計算を止める VBA よく使う小技


スポンサーリンク

割り込みを止める

On Change などでフォームを計算させているパーツを使っているとき、割り込みをとめないと処理時間がかかってしかたない。
その時の割り込みを止める方法。
とめる
Application.EnableEvents = false

再開
Application.EnableEvents = True
 

表の再計算を止める

再計算を無効にする
Application.Calculation = xlCalculationManual
 
再計算を有効にする
Application.Calculation = xlCalculationAutomatic
 
※止めた状態でデバッグ中プログラムを終了させると、割り込み、再計算が止まったままになるので焦らないように。
ひとつ再開、再割り込みを許可するサブルーチンを作ってそを起動させる。か、一度エクセルを止めて再起動すればいい。
 
'停止
sub break_stop
    Application.EnableEvents = false
    Application.Calculation = xlCalculationManual
end sub
'再開
sub break_run
    Application.EnableEvents = true
    Application.Calculation = xlCalculationAutomatic
end sub
 

全角半角変換(数値とハイフン)

Function zhconv(strbuf)
    Dim i As Integer
    Dim ansData As Variant
    
    ansData = ""
    For i = 1 To Len(strbuf)
        If Mid(strbuf, i, 1) Like "[0-9]" Then
            ansData = ansData & StrConv(Mid(strbuf, i, 1), vbNarrow)
        ElseIf Mid(strbuf, i, 1) = "―" Then
            ansData = ansData & "-"
        Else
            ansData = ansData & Mid(strbuf, i, 1)
        End If
    Next i
    zhconv = ansData
End Function

スポンサーリンク