重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBA初心者です。
あるサイトのコードを活用し、自前のマクロを実行したら表示させるようにしたいです。
ググってもどのように自分のマクロへ実装するのかは見当たらなかったので、アドバイスを頂けたら幸いです。

■ソースとなるコード:
https://www.it-swarm-ja.tech/ja/excel/vba-excel% …
上記リンク先での2、3番めに書いてあるコードになります。
※実行した歳のサンプル画像を添付しました

■反映したいマクロのコード

Sub 他者評価データ取込み()
Const f1 = "C:\Users\tefun\Desktop\Projects\Evaluation\3rd_Party_Evaluation_Source_Files\" '取込ファイルの経路
Const f2 = ".xlsm" '取込ファイルの拡張子
Dim i As Long, TrRow As Long
Dim sh As Worksheet, trSh As Worksheet
Dim progressBar As New progressBar

With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Set sh = Sheets("0_3rdParty") 'コピペ先ファイルのシート名
For i = 1 To 22 '取込ファイルの個数
With Workbooks.Open(f1 & "3rd_Party_Evaluation_sheet_P" & i & f2)
For Each trSh In .Worksheets
TrRow = sh.Cells(Rows.count, "Q").End(xlUp).Row + 1
sh.Cells(TrRow, "Q").Resize(1, 2).Value = trSh.Range("K1:L1").Value
sh.Cells(TrRow, "S").Resize(1, 11).Value = trSh.Range("B13:L13").Value
Next trSh
.Close SaveChanges:=False
End With
Next
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
.statusbar = False

End With
MsgBox "完了しました"
End Sub

「VBA 進捗状況をステータスバーで表示」の質問画像

質問者からの補足コメント

  • ソースとなるコードが長い為、質問欄に書けずすみません。

      補足日時:2020/07/16 10:04
  • fujillin様、伝えにくい文章になっていたこと、大変失礼いたしました。
    ご質問に補足させていただきます。

    >ステータスバーを利用する方のものですね。
     →はい。複数のブック・シートからデータを読取るマクロに進捗状況をステータスバーに表示させたいのが目的です。

    >実装の説明を読んで実行してみたから、画像が添付できているのではないのでしょうか??
     →添付の画像はリンク先に載っていたものでした。

    >ちゃんとそのサイトに説明がありますよね?
     →ステータスバー自体のコードはネット上にあるものの、それを自分のマクロに反映する方法は得られなかったとの意味でした。

    >本体の処理の方で ScreenUpdating 等をみな止めていますけれど、その状態でステータスバーへの書き込みって更新表示されるんでしょうかね?
     →Screenupdatingの設定を訂正してみます。ありがとうございます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/07/16 13:18

A 回答 (1件)

こんにちは



>上記リンク先での2、3番めに書いてあるコードになります。
ざっとしか見ていませんが、ステータスバーを利用する方のものですね。

>ググってもどのように自分のマクロへ実装するのかは見当たらなかったので
個人が作成したものをググって参照できるようなら、それはかなり有名なものになっているはずですが……?
ってか、ちゃんとそのサイトに説明がありますよね?

>※実行した歳のサンプル画像を添付しました
実装の説明を読んで実行してみたから、画像が添付できているのではないのでしょうか??

その実装にもあるように、
 Call progressBar.Update(i, 100, "My Message Here", True)
で、引数 i に進捗度を与えて呼び出せば、バーが更新表示される仕組みです。
ですので、本体の処理から適当な間隔で進捗度を算出して呼び出せば良いだけではないでしょうか?


なお、一寸気になったのは、(確認はしていませんけれど)本体の処理の方で ScreenUpdating 等をみな止めていますけれど、その状態でステータスバーへの書き込みって更新表示されるんでしょうかね?
この回答への補足あり
    • good
    • 1

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