![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ある処理を実行するのに実行中ユーザーフォームで%表示をして終了と同時に閉じるVBAを・・コードは次のようにしています。
Sub 転記()
Dim strCode As String
Dim rngSA As Range
Dim rngFC As Range
strCode = Application.InputBox("受付番号は", "番号の入力", Type:=2)
UserForm2.Show vbModeless
'キャンセルの場合の処理
If UCase$(strCode) = "FALSE" Then Exit Sub
'受付番号の検索範囲を取得
With Sheets("sheet")
Set rngSA = .Range("A1", .Range("A65536").End(xlUp))
End With
'受付番号の検索範囲から入力された受付番号を探す
Set rngFC = rngSA.Find(What:=strCode, LookAt:=xlWhole)
'該当する受付番号が無ければ警告を表示して終了
If rngFC Is Nothing Then
MsgBox "番号がありません!", vbOKOnly Or vbCritical, "エラー"
Exit Sub
End If
'該当番号があった場合、氏名等転記
With Sheets("sheet2")
.Range("F31").Value = rngFC.Offset(0, 4).Value 'TEL
.Range("F29").Value = rngFC.Offset(0, 1).Value '氏名
End With
'後始末:変数をクリア
Set rngFC = Nothing
Set rngSA = Nothing
'メッセージ用のユーザーフォームを閉じる
UserForm2.Hide
'転記成功メッセージを表示
MsgBox "終わりました。", vbInformation
End Sub
No.4ベストアンサー
- 回答日時:
hirosatonn さんへ
>コードなど載せないで、簡単に質問すればよかったと反省しています。
こうしたテクニックは知っていてもある程度の経験のある人は、テクニックと実際の実務とどちらを取るかというと、実際の実務になってしまいます。某有名なExcelアドインなどは、確かにプログレスバーなどもついていて、見栄えがいいので、初心者「ウケ」をするようなのですが、そのコードを知っている身になると、メモリ食いのExcelに贅沢なものは要らない、ということが、優先してしまいます。これも、知っているからこその拒否反応のようなものなのですね。
ところで、プログレスバーというのは、Excel VBAの場合は、ラベルを代用して色を変えるだけなんです。VBのように、専用のコントロールがあるわけではありません。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=405615
の#3 の方は、ネットの引用のルールからしたら、その元を書かなくてはならないはずです。それは、ここにあります。
『かんたんプログラミング Excel VBA コントロール・関数編』大村あつし著 (技術評論社)
第二章の中の、「ラベルをプログレスバーとして利用する」
>コマンドボタンを押さないでUserFormが現われた状態では駄目なんでしょうね。
上記のものをそっくり写して、UserForm_Initialize() イベントで動かせばよいです。
%表示をプログレスバーの中に入れるなら、下側になるラベルにでも、Caption で表示させれば良いと思います。
この回答への補足
>UserForm_Initialize() イベントで動かせばよいです
未熟なのでよく分かっていませんが、標準モジュールでの処理?ですかネ。
馬鹿な質問ですみません。
No.3
- 回答日時:
こんばんは。
ふつうは、処理中やプログレスバーの表示というのは、Userform 設定時に、ちょうど、フリーズした状態にみえるので、それでつけるわけです。それで、
コードの内容からして、仮に時間が掛かったとしても、たかが数秒のことで、それで、%(パーセンテージ)表示が必要な部分があるのか疑問に感じています。私も、かつてプログレスバーで使ったことがあるけれど、最終的には、単に、テキストボックスに、「読み込み中」の表示を出すだけで終わってしまいました。
どこに、時間が掛かって、「処理中」の表示が必要なのか、お分かりになりますか?
プロシージャ名に「転記」とありますから、ループするのだろうと思いますが、それが書かれていません。今のままのコードでは、%(パーセンテージ) やプログレスバーをつける余地がありません。
この回答への補足
いつも未熟な私の質問に色々とお答え頂きありがとうございます。
ご指摘のとおり今回のコード(だいぶ省略していますが)ではほとんど必要の無いのですが、別のVBA処理の中でUserForm2.Show vbModeless を使っており、「お待ちください・・・」と表示されるだけなのでプログレスバー(今回皆さんからのご指導ではじめて知りました。)で%表示がでないかなと思った次第です。
コマンドボタンを押さないでUserFormが現われた状態では駄目なんでしょうね。
コードなど載せないで、簡単に質問すればよかったと反省しています。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンへの「Dropbox...
-
エクセルでマクロを実行中に「...
-
Excel VBA コンボボックスについて
-
VAB:メッセージボックスの色に...
-
Access メッセージボックスで文...
-
QT グループボックスについて
-
今日スマホでネットをしていた...
-
メッセージボックスの再表示の方法
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
Excelにて、ユーザーフォームで...
-
マクロで、次のコードへ行く前...
-
EXCELでactivexコントロールを...
-
「Columns("A:C")」の列文字を...
-
VBA(エクセル)で自動的にボタン...
-
【C#/Java?】try-catchでcatch...
-
eclipseのデバッグ中に変数の値...
-
IF文に時間(何時から何時ま...
-
バックスペース機能の作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンへの「Dropbox...
-
VBA listBoxから
-
今日スマホでネットをしていた...
-
エクセルでマクロを実行中に「...
-
Excel VBA コンボボックスについて
-
リストボックスの全行表示
-
VAB:メッセージボックスの色に...
-
Access メッセージボックスで文...
-
VB.net コンボボックス
-
NEXUS 7で自炊したPDFが読めま...
-
Excel VBAでMsgboxの値を取得す...
-
QT グループボックスについて
-
メッセージボックスの再表示の方法
-
Excelで、リストボックスでカテ...
-
サービスアプリからメッセージ...
-
AccessのMsgBox表示位置について
-
windows10 上にぴょこぴょこ出...
-
お世話になります access初心者...
-
処理中メッセージを出しておき...
-
画面上の文字が表示されない
おすすめ情報