Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5977 / 13644 ツリー ←次へ | 前へ→

【47864】マクロを止めるボタンを作りたい ユニフ 07/3/24(土) 19:13 質問[未読]
【47866】Re:マクロを止めるボタンを作りたい ぱっせんじゃー 07/3/24(土) 19:42 発言[未読]
【47871】Re:マクロを止めるボタンを作りたい ユニフ 07/3/24(土) 23:30 質問[未読]
【47898】Re:マクロを止めるボタンを作りたい ぱっせんじゃー 07/3/26(月) 9:23 発言[未読]
【47870】Re:マクロを止めるボタンを作りたい りん 07/3/24(土) 23:21 発言[未読]
【47883】Re:マクロを止めるボタンを作りたい ユニフ 07/3/25(日) 13:05 お礼[未読]

【47864】マクロを止めるボタンを作りたい
質問  ユニフ  - 07/3/24(土) 19:13 -

引用なし
パスワード
   B列にデーターがある場合その行を表にして印刷するマクロを作りました。
最大17個の表が印刷されます。これはまとめて印刷ボタンというのを
作り、ボタンを押せば実行されるようになっています。

しかしよくわかってないスタッフが一つだけ印刷させようとして
間違えてこれを押した場合、マクロを途中で止めるような安全ボタン
ができると良いと考えていますが可能でしょうか。

まとめて印刷ボタンをクリックすると、マクロまとめて印刷
が実行される、実行中にさらにそれを途中で止めるような
コードはありますでしょうか。

よろしくお願いします。

【47866】Re:マクロを止めるボタンを作りたい
発言  ぱっせんじゃー  - 07/3/24(土) 19:42 -

引用なし
パスワード
   stpの方はコマンドボタンなど
に登録して起動しやすくしておいてください。

以下は全て同じモジュール内に記述してください。

testを実行後、stpを実行してみてください。
処理を中止します。


Dim flg As Boolean
Sub test()
Dim i As Integer
 flg = True
 For i = 1 To 20
 DoEvents
  If flg = False Then
   MsgBox "中止"
   Exit Sub
  End If
  Application.Wait Now + TimeSerial(0, 0, 1)
  ActiveSheet.Cells(1, 1).Interior.ColorIndex = i
 Next i
End Sub

Sub stp()
flg = False
End Sub

【47870】Re:マクロを止めるボタンを作りたい
発言  りん E-MAIL  - 07/3/24(土) 23:21 -

引用なし
パスワード
   ユニフ さん、こんばんわ。

>間違えてこれを押した場合、マクロを途中で止めるような安全ボタン
>ができると良いと考えていますが可能でしょうか。

ここで、Keinさんがエスケープキー(連打?)でマクロを停止させる方法を書いていますのでご参考まで。
htt p://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=47759;id=excel

【47871】Re:マクロを止めるボタンを作りたい
質問  ユニフ  - 07/3/24(土) 23:30 -

引用なし
パスワード
   ぱっせんじゃー さん レスありがとうございます。
さっそく試してみました。

TRUEやFalseで動作をコントロールできる場合
この方法でstopできるのはわかりました。
私ののマクロなのですが以下のようになってます。

  If Range("E2") = 1 Then
  Application.Run "テスト.xls!セレクト1"
  Range("B20:H37").PrintOut Copies:=1, Collate:=True
  End If
  
  If Range("E3") = 1 Then
  Application.Run "テスト.xls!セレクト2"
  Range("B20:H37").PrintOut Copies:=1, Collate:=True
  End If
  
  If Range("E4") = 1 Then
  Application.Run "テスト.xls!セレクト3"
  Range("B20:H37").PrintOut Copies:=1, Collate:=True
  End If
  
  If Range("E5") = 1 Then
  Application.Run "テスト.xls!セレクト4"
  Range("B20:H37").PrintOut Copies:=1, Collate:=True
  End If
  
  If Range("E6") = 1 Then
  Application.Run "テスト.xls!セレクト5"
  Range("B20:H37").PrintOut Copies:=1, Collate:=True
  End If
以下セレクト17まで続く。E列はB列のデーターの空白判定する関数が入れてあり
B列が空白(=0)の場合、結果的に印刷しないようにしてあります。

この記述だとパッセンジャーさんの方法だと
応用できないと思うのですがなにかうまい方法がありますでしょうか。

【47883】Re:マクロを止めるボタンを作りたい
お礼  ユニフ  - 07/3/25(日) 13:05 -

引用なし
パスワード
   りん さん、こんにちは

エスケープキーの操作ってマクロ記録できないですね。
エスケープキー連打しろとシートに書くのが一番の対策かな。

【47898】Re:マクロを止めるボタンを作りたい
発言  ぱっせんじゃー  - 07/3/26(月) 9:23 -

引用なし
パスワード
   MsgBox
で条件分岐させてみてはいかがでしょう?

5977 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free