プロが教える店舗&オフィスのセキュリティ対策術

エクセルのマクロについて、調べても解らなかったのでどなたかご教示ください。


ボタンを押せば全シートを印刷するようにしたのですが、印刷前に確認項目が幾つかありそのチェックボックスにチェックが入っていないと印刷のマクロは実行されないという風にしたいのです。
それは可能でしょうか?



☑ 確認項目1
☑ 確認項目2

この様に確認項目がチェックされていれば印刷のマクロは有効になり、
そうじゃない場合は無効という風にしたいのです。

説明も下手くそですが、どなたか教えて頂けると助かります。お願いします。

A 回答 (3件)

エクセルマクロは、いくつかの処理をまとめて処理してくれます。


が、やりたいことをすべて処理できるわけではありません。
その場合、マクロの実体でもあるExcelVBAのプログラムを修正することになります。
ExcelVBAプログラミングの本を読んで勉強して作成してください。
    • good
    • 0

こんんちは!



>印刷前に確認項目が幾つかありそのチェックボックスにチェックが入っていないと・・・

とりあえずActiveXコントトールのチェックボックスが二つ挿入されているとします。

If CheckBox1 = True And CheckBox2 = True Then
"実行する記述"
Else
MsgBox "チェックが入っていません"
End If

みたいな流れになると思います。m(_ _)m
    • good
    • 0

こんにちは。



私のほうでは、CheckBox は、フォームコントロール・ツールからです。
最近、Active X コントロールりトラブルが多くなっているので、こちらに替えています。名称は、ワークシート左上の名前ボックスでみると「Check Box 1」ですから、Shapes(Check Box 1)でもいいはずですが、外れてしまうことがあります。
なお、チェックボックスは、右クリックぶコントロールの書式設定で、

◎セルに合わせて移動やサイズ変更をしない (選択●)
□オブジェクトを印刷する (オフ)

それと、チェック項目は、多数あるわけでしょうか?
ふたつなら、 And とかで繋いでよいのですが、そうでないなら、ループにしてほうがよいです。

'ThisWorkbook モジュールに以下のようにしたらよいでしょう。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
 Dim cnt As Variant
 Dim i As Long
 i = 0
 If ActiveSheet.Name <> "Sheet1" Then Exit Sub 'シート1の場合
 With Worksheets("Sheet1")
  For i = 1 To .CheckBoxes.Count  'コントロール配列方式
   If .CheckBoxes(i).Value = xlOff Then
    buf = buf & "," & i
   End If
  Next
  If Len(buf) > 1 Then
   MsgBox Mid(buf, 2) & "のチェックが抜けています。", vbExclamation
   Cancel = True '印刷取り消し命令
  End If
 End With
End Sub
    • good
    • 0

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