- ベストアンサー
Excelでマクロボタンを
Excelでマクロをボタン化しました。これを1000回クリックすると疲れますので一気に打つにはどうすればよろしいですか。 ご解答お願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>これを1000回クリックすると疲れますので そーですね腱鞘炎でもなったら大変です。 取敢えず1分毎に10回実行します。試してみてください。 Option Explicit Dim 実行時間 As Date, 回数 As Long Sub 指定時刻実行() If 回数 = 10 Then MsgBox 回数 & " 回実行したので『指定時刻実行』を終了します。", 64 回数 = 0 Exit Sub End If 実行時間 = Now + TimeValue("00:01:00") Application.OnTime Earliesttime:=実行時間, Procedure:="指定時刻実行" 回数 = 回数 + 1 '10回実行したいマクロ名 〇△□・・・ End Sub
その他の回答 (7)
- watabe007
- ベストアンサー率62% (476/760)
>20回で止まるのか眺めてたんですがズッと続いてます。 Dim 実行時間 As Date, 回数 As Long をモジュールの先頭に書かれましたか? 回数の値が保持されないため毎回、0会が続き終わらないのですね 下を試してください。 Sub 強制終了() Application.OnTime Earliesttime:=実行時間, Procedure:="指定時刻実行", Schedule:=False 回数 = 0 End Sub これで止まらないようならExcelを終了するしかないです。
お礼
Sub~を先に置いていました。enterを押すと区切り線が出てしまったがために勝手に変えていました。 分かりやすいご指摘ありがとうございます。
- watabe007
- ベストアンサー率62% (476/760)
>64ってのはどういった意味があるんでしょうか? MsgBox 回数 & " 回実行したので『指定時刻実行』を終了します。", 64 これの64ですね これはメーセージの横に [情報メッセージアイコン]を表示してくれます。 MsgBox "お知らせです。", 64 ↑試されると良く解りますよ 他にも 16 は、[警告メッセージアイコン] 32 は、[問合せメッセージアイコン] 48 は、[注意メッセージアイコン] などがあります。
お礼
ご解答ありがとうございます。64ってのはそうだったんですか。今、先程作っていただいたソース ↓ Sub 指定時刻実行() If 回数 = 20 Then MsgBox 回数 & " 回実行したので『指定時刻実行』を終了します。", 64 回数 = 0 Exit Sub End If 実行時間 = Now + TimeValue("00:00:06") Application.OnTime Earliesttime:=実行時間, Procedure:="指定時刻実行" 回数 = 回数 + 1 '実行するマクロ名 〇△□・・・ をしてみたんですが止まりませんヾ(・ω・`;)ノぁゎゎ 20回で止まるのか眺めてたんですがズッと続いてます。どうしたらよろしいですか?
- watabe007
- ベストアンサー率62% (476/760)
>1分に10回のところが1分に1回になるんです。 私の上げたのは1分毎に10回実行するコードです 6秒毎に20回行うのであれば Dim 実行時間 As Date, 回数 As Long Sub 指定時刻実行() If 回数 = 20 Then MsgBox 回数 & " 回実行したので『指定時刻実行』を終了します。", 64 回数 = 0 Exit Sub End If 実行時間 = Now + TimeValue("00:00:06") Application.OnTime Earliesttime:=実行時間, Procedure:="指定時刻実行" 回数 = 回数 + 1 '実行するマクロ名 〇△□・・・ End Sub
お礼
返答ありがとうございます。64ってのはどういった意味があるんでしょうか?
- watabe007
- ベストアンサー率62% (476/760)
>Option Explicitってなんですか? 変数を宣言しないと使えませんという命令です。 モジュールの先頭に書く必要があります。(今回、省いても大丈夫です。) 次に Dim 実行時間 As Date, 回数 As Long を書いて下さい。 Sub 指定時刻実行() ・・・・ ・・・・ End Sub これは、ずぅーと下でも良いですよ
お礼
返答ありがとうございますwatabe007さん。この前にソースを作って頂いたんですが1分に10回のところが1分に1回になるんです。なにかこちらが失敗してますかね? Dim 実行時間 As Date, 回数 As Long を書いて下さい。 Sub 指定時刻実行() ・ ・ End Sub のところを Sub 指定時刻実行() Dim 実行時間 As Date, 回数 As Long を書いて下さい。 End Sub と置き換えたんですがこれが悪影響したんでしょうか? ご解答お願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の仕方、すなわち、やりたいことの説明が、不完全でしょう。 毎回マクロを実行するとき、条件的なことで、変える事項は何ですか。 それを書いて質問しないと。 (1)時刻経過(例 現在時刻が条件。1分毎とか。) (2)項目を指定(例 商品Aに関すること、商品Bに関すること、…多数) (3)処理種類を指定(例 平均を出す、標準偏差出す、・・・) などいろいろあり、毎回入力が必要ならそのほうが作業的に大変です。 しかし、多分VBAを適切にプログラムを組めば(質問者はマクロの記録レベルか?)、一気に済ませられる可能性も多いように思うが。 ただし(2)(3)を決める情報は、前もって、シートのセルに入力しておかないとならない可能性は大。
お礼
imogasiさん、ご回答ありがとうございます。
- chayamati
- ベストアンサー率41% (260/624)
>Excelでマクロをボタン化しました ★ マクロは一つで、これを起動するボタンも一つですよね このように一つのマクロを連続して実行する計算はどの様なものか 思いつきませんが このマクロを繰り返し起動するマクロを作成します。 次はセルA2に繰り返し回数を入力して、自然数の合計をセルB2に求めます ---------------------------------------------------------------------------------------- Option Explicit Dim i As Integer Sub ボタン_Click() Range("b2") = 0 For i = 1 To Range("A2") マクロ_click Next i End Sub ---------------------------------------- Sub マクロ_click() Range("b2") = Range("b2") + i End Sub
お礼
chayamtiさん、ご回答ありがとうございました。
- panacon
- ベストアンサー率31% (214/679)
1行ずつ計算していくマクロであれば、繰り返し処理が有効だと思います。 行数を指定するか、あるセルがNullとまるまで繰り返すなど付けると良いと思います。解説ページがありました。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html
お礼
返事遅くなりました。解答ありがとうございます。Option Explicitってなんですか?