vbaのイベント処理を学んでいます。これが私の最初の試みです。
'in sheet Object
Dim WithEvents engine As MCengine
Private Sub engine_OnEachTrial(ByVal i As Integer)
progressBar = Application.Floor(i * 30 / engine.numOfPaths, 0.001)
With ActiveSheet.Range("E10").Characters(start:=0, Length:=progressBar).Font
.Name = "Calibri"
.FontStyle = "Bold"
.Size = 11
.ColorIndex = 16
End With
End Sub
Private Sub Worksheet_Activate()
Dim btn As Button
Dim rng As Range
Set engine = New MCengine
With ActiveSheet
Set rng = .Range("E9")
Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height)
With btn
.Caption = "Run MC simulation"
.OnAction = "runMC"
End With
End With
End Sub
Sub runMC()
engine.process = 1
engine.numOfPaths = 30
engine.start
End Sub
上記のコードの問題は、runMCがモジュールにある必要があるように見えるため、onActionによって登録されたサブプロシージャを呼び出せないことです。Dim WithEvents engine As MCengine
シートオブジェクトで宣言する必要があるため、これらのコードをモジュールに移動できません。だから私は真ん中で立ち往生しています。他のボタンコールバックメソッドを使用する必要がありますか?
モジュール内のイベントでクラスを使用できないということですか?誰でも私を啓発することができますか?