dポイントプレゼントキャンペーン実施中!

excel2000のVBAでフォームのテキストボックスに実行ログを表示させていのですが、以下のものだと全ての処理が終了したときに表示されてしまいます。
私が望むのは、イミディエイト風に現在の実行状況(一行づつ)を表示したいのですが、アドバイスをお願いします。

Private Sub bA_Click()
nCnt = ActiveWorkbook.Worksheets.Count
For I = 1 To nCnt
With ActiveWorkbook
If (.Worksheets(I).Name = "A") Then
Call Update_All(.Worksheets(I).Name)
End If
End With
Next I
End Sub

Function Update_All(sSheetName As String)
Call DB_Connect(Connect)
Set Myws = DBEngine.CreateWorkspace("ODBC", "User", "Password", dbUseODBC)
Set Myco = Myws.OpenConnection("", dbDriverNoPrompt, False, Connect$)
Myco.QueryTimeout = 3600
With Worksheets(sSheetName)
Do Until (.Cells(I, 1) = "")
For J = 3 To 24
If .Cells(I, J) > 0 Then
PRICE = .Cells(I, J)
Spproc$ = "UPDATE AAA SET A.MPRIC=CONVERT(INT,A.WEGT*" & PRICE & "+0.5) " & "FROM AAA A,BBB B "
tLOG.SelText = Format(Now(), "hh:mm:ss") & Chr(9) & "更新開始・・・" & vbCrLf
Set Myset = Myco.OpenRecordset(Spproc$, dbOpenDynamic, 0, dbOptimistic)
Myset.Close
tLOG.SelText = Format(Now(), "hh:mm:ss") & Chr(9) & "更新終了・・・" & vbCrLf
End If
Next
I = I + 1
Loop
End With
Myco.Close
Myws.Close
End Function

A 回答 (2件)

テキストボックスに文字を設定した後にDoEventsを入れればいけると思います。


が、その他のExcelでの操作もできるようになってしまうので、注意が必要です。
詳しくはDoEventsをヘルプで調べてみてください。
    • good
    • 0
この回答へのお礼

DoEventsを入れたら思うような状態になりました。
ありがとうございました。

お礼日時:2005/09/30 11:26

ListBoxがお勧め



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1108985
    • good
    • 0
この回答へのお礼

これもいい手ですね。
ありがとうございます。

お礼日時:2005/09/30 11:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!