|
>具体的なコードで、実感させてもらえませんか?
たとえば、ExcelのSheetのイベントにChageイベントがありますよね。
それをイベントを使わずにやろうとするとこんな感じになると思います。
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub GetEventChange()
Dim vntPrvData As Variant
Dim vntNewData As Variant
Dim lngRowCount As Long
Dim lngColCount As Long
Dim i As Long, j As Long
vntPrvData = ActiveSheet.UsedRange.Value
lngRowCount = UBound(vntPrvData, 1)
lngColCount = UBound(vntPrvData, 2)
Do
DoEvents
Sleep 500
vntNewData = ActiveSheet.UsedRange.Value
If lngRowCount <> UBound(vntNewData, 1) _
Or lngColCount <> UBound(vntNewData, 2) Then
MsgBox "Change"
vntPrvData = ActiveSheet.UsedRange.Value
End If
For i = 1 To lngRowCount
For j = 1 To lngColCount
If vntPrvData(i, j) <> vntNewData(i, j) Then
MsgBox "Change"
vntPrvData = ActiveSheet.UsedRange.Value
End If
Next j
Next i
Loop
End Sub
面倒なので、値が変わったということだけをチェックしていますが
イベントを使用するよりもはるかに重たいです。
もっとも、データがびっしり埋まっているシートに対して
行なうと地獄をみます。
これでお分かりになりましたか?
なお、前にも言いましたが、この手の処理はExcelで行なわないほうがよいです。
Excel VBAだと別Processで動作させることができないので、
あるマクロが走っている間、他のマクロを起動させることができません。
素直に、VBなりCなりJavaなりちゃんとしたProgram言語で
開発することをお勧めします。
|
|