
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
こんばんわ。
別のマクロを考えて見ました。次のように操作してみて下さい。ユーザーフォームを1個挿入しフォーム上にラベルを4個・コマンドボタンを1個配置する。
ラベル1(作業状態を表示するラベル。)
オブジェクト名:Label1
Caption:ボタンを押して処理を開始して下さい。
ラベル2(プログレスバーの枠の部分となるラベル)
オブジェクト名:Label2
Caption:空白
SpecialEffect:2
ラベル3(プログレスバーのバーの部分となるラベル)
オブジェクト名:Label3
Caption:空白
Label2よりも少し小さめにつくり、Label2の上に重ねる。
ラベル4(進行状況を%で表示させるラベル)
オブジェクト名:Label4
Caption:0%
標準モジュールを挿入し、下記のコードを記述する。
Sub Macro1
Userform.Show
End Sub
ユーザーフォム1のモジュールシートに下記のコードを記述する。
Private Sub CommandButton1_Click()またはPrivate Sub UserForm_Activate()
Dim myStep As Single
Dim i As Long, j As Long
フォームを表示中に実行したいマクロを記述
With Me.Label3
myStep = .Width / 100
.Width = 0
.BackColor = &HFF0000
Me.Label1.Caption = "実行中です・・・"
For i = 1 To 100
.Width = .Width + myStep
Me.Label4.Caption = i & "%"
DoEvents
Next i
Me.Label1.Caption = "処理が終了しました。"
End With
Unload Userform1
End Sub
ご不明な点・不具合等がございましたらお気軽にお知らせ下さい。
No.7
- 回答日時:
#4です。
他のサンプルマクロを組んでみました。お試しになってみて下さい。Private Sub CommandButton1_Click()
Dim myStep As Single
Dim i As Long, j As Long
With Me.Label3
myStep = .Width / 100
.Width = 0
.BackColor = &HFF0000
Me.Label1.Caption = "実行中です・・・"
Randomize
For i = 1 To 100
For j = 1 To 10
With ActiveSheet.Cells(i, j)
.Interior.ColorIndex = Int(56 * Rnd + 1)
.Value = .Interior.ColorIndex
End With
Next j
.Width = .Width + myStep
Me.Label4.Caption = i & "%"
DoEvents
Next i
Me.Label1.Caption = "処理が終了しました。"
End With
Unload Userform1
End Sub
ユーザーフォームを1個挿入しフォーム上にラベルを4個・コマンドボタンを1個配置する。
ラベル1(作業状態を表示するラベル。)
オブジェクト名:Label1
Caption:ボタンを押して処理を開始して下さい。
ラベル2(プログレスバーの枠の部分となるラベル)
オブジェクト名:Label2
Caption:空白
SpecialEffect:2
ラベル3(プログレスバーのバーの部分となるラベル)
オブジェクト名:Label3
Caption:空白
Label2よりも少し小さめにつくり、Label2の上に重ねる。
ラベル4(進行状況を%で表示させるラベル)
オブジェクト名:Label4
Caption:0%
コマンドボタンを押して動作させてみて下さい。
ユーザーフォームが貴方様の思い通りの動作をしていると思います。
ご不明な点・不具合等がございましたらご遠慮なくお知らせ下さい。
有難うございます。
これはプログレスバーを既存のものではなく自分で作っているわけですね?
やってみました。セルにランダムに色と番号をつけるマクロを実行中、プログレスバーが作動し、%まで表示されました。マクロが終了すれば消えました。
ただユーザーフォームのコマンドボタンでマクロが動きましたが、そうではなくて別のマクロを実行すると、このユーザーフォームがあらわれ、ユーザーフォームのコマンドボタンを押さなくとも作動するようにしたいのです。勝手を言いますがよろしくお願いします。
No.6
- 回答日時:
#3のものです。
ProgressBar1が認識されていないと言う事でしょうね。シート上のForm上にプログレスバーが貼りついているでしょうか。(1)ツール-マクロ-VB
(2)VBE画面で
挿入-ユーザーフォームでUserForm1が
出る。
ツールボクッスが同時に出たなら、プログレスバー があるか、確認し、あればフォーム上に貼り付け る。
フォーム上でダブルクリックし
Private Sub UserForm_Click()を出し、End Sub
の間に#3のコードの中身を貼り付ける。
後は実行。
何度もエクセル2000では、やって出来ましたが。
プログレスバーは基本的なコントロールで、97でも同じく使えると思ったのですが。(エクセル5.0-->97は変更点が多いようですが。)
有難うございました。今度はうまく行きました。
これでユーザーフォームをクリックするとプログレスバーが働くことはわかりましたが、他のマクロを実行させると、このユーザーフォームが出てきてフォームをクリックしなくともプログレスバーが機能するようにするのはどこにどう記述すればいいのでしょうか?
No.5
- 回答日時:
#4です。
マクロの記述ミスがありましたので、下記のマクロを参考にしてみて下さい。ユーザーフォーム1のモジュールシートに
Private Sub UserForm_Activate()
Dim Tmr as Variant
tmr = Timer
Do While Timer < tmr + 1 'Tmr+1の1は秒数です。10にすれば10秒です。
DoEvents
Loop
Unload Me
End Sub
Sub/ユーザーフォームの実行ボタンをクリックするとマクロが走り、動作が確認できます。
ご不明な点・不具合等がありましたら、ご遠慮なくお知らせ下さい。
No.4
- 回答日時:
初めまして。
サンプルマクロを組んでみました。参考にしてみて下さい。ユーザーフォーム1のモジュールシートに
Private Sub UserForm_Activate()
Dim Tmr as Variant
Do While Timer < tmr + 1 '1は秒数です。10にすれば10秒です。
DoEvents
Loop
Unload Me
End Sub
ThisWorkbookのコードエディターに
Sub Macro1()
UserForm1.Show
End Sub
ご不明な点・不具合等がありましたら、ご遠慮なくお知らせ下さい。
有難うございます。
ただ、これではマクロ実行中の表示ではなく、指定した秒数の間だけの表示ではないでしょうか?
違ったらすみません。
No.3
- 回答日時:
エクセル2000です。
下記も出来ます。VBAで、ユーザーフォームを貼り付け、
(1)ツールボックスの余白を右クリックし
(2)「その他のコントロール」をクリック
(3)MicrosoftProgressBarControl6.0(sp4)をクリック
(4)OKをクリック
(5)フォームのイベントプロシージュアのコードを
Private Sub UserForm_Click()
Dim i As Long
Dim tmsv As Double
ProgressBar1.Min = 0
ProgressBar1.Max = 100
For i = ProgressBar1.Min To ProgressBar1.Max
ProgressBar1.Value = i
Do Until Timer > tmsv
DoEvents
Loop
tmsv = Timer
Next
End Sub(一部WEBより引用)
フォームをクリックするとバーが動く。時間を適当に設定
し、次の処理に引き継ぐ。
上例はフォームのイベントにしましたが、テストをやってもらうためで、保存のコードの下に挟むことになるでしょう。
有難うございました。
「実行時エラー'424'
オブジェクトが必要です。」となってしまいます。
デバックすると
ProgressBar1.Min = 0
が黄色くなっていました。
どうすればいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのComboboxでマウスのスク...
-
ACCESS フォームのサイズ調整
-
Exitイベントから自分自身のコ...
-
Access2000 フォーム表示位置が...
-
マクロボタンが勝手に飛び回る
-
エクセルで、抽出したデータだ...
-
ACCESSでVBAから選択クエリの抽...
-
Access サブフォームでの選択行...
-
前のレコードの値を自動で入れたい
-
【AccessVBA】レコードセットOp...
-
accessでオートナンバーを使わ...
-
Accessでデータを更新したらそ...
-
ACCESS 複数のフォームから同一...
-
(ACCESS)条件に応じて、テキ...
-
ACCESSで、フォームで抽出した...
-
PDFファイルから特定の文字を検...
-
ACCESS リストボックスの字の色...
-
Accessで、一覧からクリックし...
-
Accessの選択クエリの抽出条件...
-
Accessのコンボボックスでリス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのComboboxでマウスのスク...
-
スクロールバーをVBAで操作したい
-
Access2000 フォーム表示位置が...
-
ACCESS フォームのサイズ調整
-
実行エラー'424' ????
-
マクロボタンが勝手に飛び回る
-
エクセルのVBAでマクロ実行...
-
エクセル上に画像を貼り付けて...
-
EXCEL VBA フォームクローズと...
-
Accessのマクロについて質問です。
-
アクセスのカレンダーコントロ...
-
Accessのサブフォームを検索
-
ワークシート上に検索用のボッ...
-
マクロを含んだexcelブックの保...
-
Exitイベントから自分自身のコ...
-
コマンドボタンを押すと、ユー...
-
ACCESSアクションマクロでイン...
-
エクセル2000のオプションボッ...
-
ACCESS(アクセス) マクロを使...
-
accessのメニュー画面について...
おすすめ情報