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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフォーム御礼とは何ですか?

こんにちは。
あるブログで「フォーム御礼」という言葉を見かけましたが、どういう意味でしょうか?教えてください。

Aベストアンサー

そのブログサイトに設置されているメールフォームなどから
送られてきたブログ閲覧者からのメッセージに対する
ブログ管理者のお礼ではないでしょうか。

Q「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」

「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」
というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。
どこが間違っているのか教えてください。
また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。
よろしくお願いいたします。

Sub Cell( n , "A" )に1を記入する()

Dim n As Long
Dim m As Long
Dim s As Long

'現在のセル( n , "A" )より14行上に数値がないことを確認するために
'14行上のセルを全て足し算しています。
For m = n - 14 To n - 1
s = s + Worksheets("Sheet1").Cells(m, "A").Value
Next

'足し算結果がゼロならば何も記入していないと判断し、
'数字の「1」を記入します。
If s >= 1 Then
Worksheets("Sheet1").Cells(n - 1, "A").Value = 0
ElseIf s = 0 Then
Worksheets("Sheet1").Cells(n - 1, "A").Value = 1
End If
End Sub

「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」
というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。
どこが間違っているのか教えてください。
また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。
よろしくお願いいたします。

Sub Cell( n , "A" )に1を記入する()

Dim n As Long
Dim m As Long
Dim s As Long

'現...続きを読む

Aベストアンサー

はいはい了解。

今着目しているセルが (n,1)であるとする。

条件: 今いるところから上に14行サーチして、一度でも1か2の値が見つかったら
     回答を0とする。14行すべてに1・2の値がひとつも含まれていなければ1とする。



Ans = 1

for i = 1 to 14

x = cells ( n - i , 1 ).value

if x = 1 or x = 2
then
Ans = 0
endif
next i


cells ( n , 1 ) = Ans


デフォルトの回答値=1としておき、一回でも条件にヒットしたら回答値=0にする。
ヒットしたらfor~nextを強制的に閉じてもいいけど、面倒なのでそのまま14回検索する。

Q“フォーム”とは何でしょうか。

“フォーム”というインターネット関連の言葉を最近耳にいたします。

検索を試みましたが、しっくりと理解できません。

特徴を教えていただけないでしょうか。
何ができるのでしょうか。その例を教えていただきたく願います。

Aベストアンサー

「フォーム」とは、データを送信するための窓といったらいいでしょうか。gooでも、検索するときに検索キーワードを入力するボックスがありますよね。それやチェックボックスなんかを総称して「フォーム」と呼びます。

「フォーム」を使えば、ユーザーが任意に選んだ情報をサーバーに送信できるという特徴がありますね。(つまり選択肢のなかから選択といったことが可能になる)

QIf myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou こちらについて教えていただきたいです。

myTorikomibi = Range("A2").Value
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, 4) = myTantou
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, 14) = myTantou
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou
For i = 1 To 3
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, i + 4) = myTorikomibi
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, i + 14) = myTorikomibi
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, i + 24) = myTorikomibi
Next i
マクロを編集しようとしましたところこちらが解読できづに困っています。
こちらだけとりだして実行しながら解読していますが混乱してしまっています。ご存知の方いらっしゃいましたら教えてください。Then以降がわかりません。よろしくお願いいたします。

myTorikomibi = Range("A2").Value
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, 4) = myTantou
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, 14) = myTantou
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou
For i = 1 To 3
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, i + 4) = myTorikomibi
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, i + 14) = myTorikomibi
If myCityBUNRUINO = 2 Then Cells...続きを読む

Aベストアンサー

こんにちは。maruru01です。

ヘルプはご覧になりましたか?
特に、Cellsについて。
Cellsは、

Cells(行番号, 列番号)

で、セルを参照します。
なので、各条件の時に、変数「myTantou」や「myTorikomibi」に格納されている値をそれらのセルに代入しているだけですが。
ただし、行番号が、

「myPrefNO + 3 - 47」
「myPrefNO + 3 - 47 - myCityNu」

などとちょっとややこしくなっていますが。
これも、変数「myPrefNO」「myCityNu」に入っている値から行番号が決まるというだけです。
例えば、
myPrefNO=60
myCityNu=2
なら、下の例は、
60+3-47-2=14
で、14行目となるということです。

Qメールフォームのソースにある「id="sen"」とは何?

人にもらったメールフォームをカスタマイズしてフォームを作っています。一行のテキスト入力フィールドのソースが以下のようになっています。
<INPUT type="text" size="50" maxlength="50" name="mail1" id="sen">
フィールドは複数あるのですが、どれも「id="sen"」がついていて、これが何を規定しているものかわかりません。html制作はホームページビルダーを使いましたがそのような設定項目はなく、Web制作の本をみても載っていません。なくてもいいものなのか、設定が必要なものなのか、わかる方、教えて下さい。
(私はhtmlを作成し、あとはプログラマに修正してもらうことになっているのですが、そのプログラマの方もよくわからないようです。)

Aベストアンサー

idはスタイルシートやJavaScript、DynamicHtmlで使用される要素です。
そういった類のものがソース内になければ、idは消去しても問題ないはずです。

参考URL:http://www.tohoho-web.com/html/attr/id.htm

QExcelVBAでCells(Row,Column)を使用してセルの範囲を指定する方法

Excelのプログラムで例えば、セル「A」から「F」までの範囲の場合、

Range("A:F")

セル「A1」から「F3」の場合、

Range("A1:F3")

となりますが、これをCells(Row,Column)を使用した方法はあるでしょうか?
回答よろしくお願いします。

Aベストアンサー

>Range("A1:F3")

これを、Cells(Row,Column)のみで表すことはできません。
同じRangeプロパティを使って

Range( Cells(1,1), Cells(3,6) )

Range( Cells(1,"A"), Cells(3,"F") )

Row1 = 1 :Clm1 = 1
Row2 = 3 :Clm2 = 6
Range( Cells(Row1,Clm1), Cells(Row2,Clm2) )

見れば分かると思いますが、
Cells(Row,Column)では、ひとつのセルしか指定できない、
即ちRangeプロパティみたいに範囲指定は出来ないということです。


ところで、
ComboBoxの▲云々の質問が削除されてませんか?
夜にでも回答しようかと思っていたのですが。(^^;;;
自己解決したのでしょうね。たぶん。
 

Q質問フォームからの情報とは

よくホームページなどで、
「ご意見・ご感想はコチラ」のような入力するところがありますが、
(アドレスへ送るのではなく、入力フォームです)
あれは送り元であるこちらの情報、
例えばPCやケータイの何らかの情報も自動的に送られるものなのでしょうか?

同じPCから二度送れば、同じ情報が出て発送者が分かったりするものでしょうか?

Aベストアンサー

そのフォームサービスによって違うと思いますが、IPとHostが分かってしまうものがあります。
そういったものだと同じPC・ケータイからの発信なら分かってしまうでしょう。

QVB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

VB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

Aベストアンサー

&amp;="&"
&amp;="""
=Right([nendo],2) &amp; &quot;/06&quot  -> =Right([nendo],2) & "/06"
[nendo]はアクセスのフィールド名か(アクセスのVBA?)。[]で囲むから。
中身は、#2でご指摘の年度で2007とかは行っているのでしょう。
Right関数は文字列の右側、最後から文字数を指定して切り出す。
&は文字列を結合する演算子。
/06をこの順序で結合するもの。

QGV-RX26T256HのPCBフォームとは?

http://www.links.co.jp/html/press2/gigabyte_gv-rx26t256h.html
今度、上記サイトのボードを買おうと思っているのですが、PCBフォームの意味が分かりません。
私のPCはマイクロATXなので、もしかしたら使えないのでしょうか?
スペックは
M2A-Vm
AMD DC 5000+
CFD W2U800CQ-1GLZJ PC2-6400 2G
DVD ASUS DRW-2014L1T B BULK
HDD HITATHI GST 160G
M-60BK (ブラック・電源なし)
ZUMAX 400W

宜しくお願いします。

Aベストアンサー

PCBフォームはATX、PCBサイズは175mm×111mm
ざんねんながら ATX仕様ですが PCはマイクロATX無理かと思いますが
上は高さ と 長さ表示です。
ケースによるかな
ついでに言っときますがASUSU とGIGABYTE 相性悪いよ
同メーカー選んだ方が正解ですが

Qアクセス2000で作成したデータベースにテーブルを追加したいのです 「Set tbl = catDB.Tables![会費管理2]」 

アクセスで作成したデータベースがあります。
簡単にテーブルを追加するプログラムを作成したいのですが可能かしら?
現在[会費管理2]というテーブルが無いので[会費管理2]と言うテーブルを追加して、そのテーブルに各フィールドを作成したいのです。
作成したSet tbl = catDB.Tables![会費管理2] に
'以下追加したいフィールド
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値1"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値2"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値3"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "日付"
.Type = adDate
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "金額"
.Type = adCurrency
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = Nothing
Set tbl = Nothing
Set catDB = Nothing
cnn.Close
End Sub

アクセスで作成したデータベースがあります。
簡単にテーブルを追加するプログラムを作成したいのですが可能かしら?
現在[会費管理2]というテーブルが無いので[会費管理2]と言うテーブルを追加して、そのテーブルに各フィールドを作成したいのです。
作成したSet tbl = catDB.Tables![会費管理2] に
'以下追加したいフィールド
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値1"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX...続きを読む

Aベストアンサー

大変申し訳ございません。
私の勉強不足と思います。

> Set tbl = catDB.Tables![会費管理2]

テーブルが無い時点で、上記はエラーとなる気がします。
というより、
![会費管理2]
という記述したことが無いので、申し訳ありません。

私では解決できないと思いますので、他の方の回答を待ってください。

失礼いたしました。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報