これはまぁ意外性はないんですけど、とりあえず測定だけはしておこうかと。
.Netだったら。VBではAndAlso、C#では&&とかが使えるんですけど、VBAでは使えませんものね。
というわけで、またの名を、And v.s AndAlso ってコトですかね?!これをVBAではAnd とIfのネスト構造で再現して対決します。
(1)If IsCheck(i) And IsCheck(i + 1) Then
(2)If IsCheck(i) Then if IsCheck(i + 1) Then
結果
(1):3436 ミリ秒 (2):2563 ミリ秒
※Access2003で実験
サンプルソース
フォームにtxtDATAという名前のテキストボックスを作って、そこにタイムを表示する。clsTimerMMクラスは「時間経過計測クラス‐VBA編」参照。
Dim ClsTimerMM As ClsTimerMM Dim strTextMsg As String '************************ Dim lngMax As Long Dim i As Long '************************ Set ClsTimerMM = New ClsTimerMM lngMax = 10000000 '************************ ClsTimerMM.SetStartDate For i = 0 To lngMax If IsCheck(i) And IsCheck(i + 1) Then End If Next strTextMsg = Left("If IsCheck(i) And IsCheck(i + 1) Then" & String(50, " "), 50) & ":" & ClsTimerMM.ElapsedTime & vbCrLf '************************ ClsTimerMM.SetStartDate For i = 0 To lngMax If IsCheck(i) Then If IsCheck(i + 1) Then End If End If Next strTextMsg = strTextMsg & Left("If IsCheck(i) Then If IsCheck(i + 1) Then" & String(50, " "), 50) & ":" & ClsTimerMM.ElapsedTime & vbCrLf '************************ Me.txtDATA.Value = strTextMsg Set ClsTimerMM = Nothing
Private Function IsCheck(ByVal intChk As Long) As Boolean IsCheck = (intChk Mod 2 = 0) End Function
0 件のコメント:
コメントを投稿