• ベストアンサー

Excel VBA シート印刷

VBA初心者で申し訳ないですが 質問させていただきます。 32社の企業様がいて入力用のシートに 全てリンクさせているのですが 都度印刷するタイミングが違います。 そこで、チェックボックスを活用して TRUEの時は印刷できるように設定したいのですが どのようなコードがありますでしょうか? ご教授いただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1625/2467)
回答No.3

32社の一覧シートがありそこに各社のシート名が記載されていてそこに各々チェックボックスを付けるとした場合 たとえば C列に企業名、D列に各社のシート名 B列に各社の行にチェックボックスを作成します、32個。 フォームコントロールの場合は コントロールの書式設定でリンクするセルをA列の各社の行にします(A1とか) コントロールを選択した状態で数式バーに=A1(1行目の場合)といれてもOKです。 ActiveXコントロールの場合は デザインモードでプロパティのLinkedCellでA列の各社の行にします(A1とか) 添付ファイルを参考にしてください これでチェックボックスの結果がA列のそれぞれの行に反映されます。 印刷のコードはどちらのコントロールにしたとしても Sub Test() Dim i As Long For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Cells(i, "A").Value = True Then '印刷するシートを指定して印刷 End If Next End Sub

ishikawa66
質問者

お礼

詳しく教えて頂きありがとうございます。 色々自分で検索してみましたが なかなかやりたいコードが見つけられず 質問させていただきました。 早速やってみます!! ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1625/2467)
回答No.4

No.3の補足です。 チェックボックスを一個一個設定するのが面倒な場合、以下のサイトを参考にして一気に作成してください。 【エクセル】チェックボックスのリンクするセルを自動で指定 https://xnonce.com/wq7rpq4o/

全文を見る
すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.2

ワークシート上に配置したチェックボックスが オンなのかオフなのかをVBAで判定するには どのようなコードになるのか? ということを質問されているのであれば、以下です。 ワークシート上に配置できるチェックボックスには、 フォームコントロールとActiveXコントロールがあります。 添付した画像は 上側がフォームコントロールで、 チェックしたかどうかの結果はB2セルに埋まる設定です。 下側がActiveXコントロールです。 以下がコードサンプルです。 'フォームコントロールの場合 Sub aaa()  If ThisWorkbook.Sheets("Sheet1").Range("B2").Value = True Then   MsgBox "オンだよ"  Else   MsgBox "オフだよ"  End If End Sub 'ActiveXコントロールの場合 Sub bbb()  If ThisWorkbook.Sheets("Sheet1").CheckBox1.Value = True Then   MsgBox "オンだよ"  Else   MsgBox "オフだよ"  End If End Sub

ishikawa66
質問者

お礼

回答いただきまして ありがとうございます。 色々参考にしてみます。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルVBAでは、こういう「コントロール」(GUI部品)と言う「チェックボックス」などを使うときは、「ユーザーフォーム」を挿入し、それを台紙として、チェックボックスを(今回は32個)張り付け、1つのチェックボックスをクリックしたとき(クリック・イベントという)、を捉え、対応したシートの、印刷を実行するプログラムを走らせます。  問題は2,3社なら問題は少ないのですが、32社の区別をする場合は、 クリックイベントを各チェックボックスに、(初心者的には)32回(ほぼ同じ)似たコード群を、書くことになります。これが(少しVBAなどに慣れると)スマートでないのです。  それを解決する仕組みは色々ありますが、初心者にはむつかしい点もあります。  どうしますか?コントロール配列というのが、VBAでは取り上げられていないのです。 Googleで「vba コントロール配列」で照会し、質問者が、数個の記事を読んでみて、やれそうだと思うか、考えてください。 リストボックス(1つ)なら、32社はスクロールしないでも、探せる(ギリギリ?の)数です。シート名は、32社の各社名を連想できるものですか?それなら32シートの名前をリストボックスのAddItemのアイテムに使って、選択させてはどうかな。 ーー 初心者は、こういうウィンドウズでよく目にする部品の利用が、カッコよいよいので、使いたくなるが、それらはVBAの基礎が終わって、次に学習する1大分野ですのでどうしますか?他人(素人の従業員など)に使わせることが背景にあるはずで、 初心者が、他人に使わせるアプリを作るべきかどうか、議論があってしかるべきでしょう。 初心者向けの、VBAの本には、コントロールのことは、省略されていることが多い。 >VBA初心者、と言うのも、謙遜の場合や、他の言語は経験ありの人も居る、はずなので、今(今回)やり始めるべきかどうか。 また、32個のチェックボックスを、1つのユーザーフォームに、(手作業で作るのもあり、だが)、プログラムで作成したいというのも、勉強すべき点になるだろう。

ishikawa66
質問者

お礼

imogasi様 ご丁寧な回答有難うございます。 初心者が簡単に見えてしまってもやはりVBAでは 奥が深いのですね。 まだまだ知識と勉強不足な部分が多くお恥ずかしい限りです。 色々なアドバイスいただきありがとうございます。 もう少し 社内でも検討していきます。 私の質問に対し、親切に回答していただき ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBA チェックボックスについて

    VBA初心者です。 あるシート(セル)に作った入力用チェックボックスにチェック(TRUE)を入れたときに、別シートの特定の位置に楕円を引きたいのですが、どのようなやり方があるでしょうか。 使い方は入力用シートと印刷用シートを分けて、入力用シートのチェックボックスの状態で印刷用シートの特定のセルに選択したことがわかるように楕円をつけたいというものです。 よろしくお願いします。

  • VBA 印刷 コード

    今業務で困っているので 質問させていただきます。 前回は画像載せ忘れてしまい再度画像載せます。 現在 30社以上の顧客がいて それぞれ印刷のタイミングが違うので チェックボックスがTRUEの時は その顧客のシートを印刷できるようにしたいです。 (印刷ボタンをおしたら印刷) 前回は言葉足らずになってしまい混乱させてしまって 申し訳ございません。 回答いただいた皆様ありがとうございます。

  • Excel VBA 複数シートの一括印刷について

    標記の件、御指導願います。 シート1:印刷設定(チェックボックスが印刷したいシート分あります) シート2~34:チェックボックスがオンである表題のシートを選択し一括で印刷する。 を、VBAで作ってみましたが、エラー(インデックスが有効範囲にありません)が出てしまいます。 Sub CheckBoxPrint() Dim ArrySheet() As String Dim I As Long Dim k As Long k = 0 For I = 1 To 33 If ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True Then ReDim Preserve ArrySheet(k) ArrySheet(k) = ActiveSheet.DrawingObjects("CheckBox" & I).Object.Caption k = k + 1 End If Next I ThisWorkbook.Worksheets(ArrySheet).PrintOut ←エラー(インデックスが有効範囲にありません) Erase ArrySheet End Sub     このエラーを回避する方法を御指導してください。 よろしくお願い致します。

  • VBA

    下記に、ツールバーにある印刷ボタンを押すとチェックBOXがチェックされていない時印刷できないようにするというVBAですが下のVBAのような感じで 例えばセルA1にFALSEという文字が入っていたら印刷不可で印刷するかしないかを選択。もし、セルA1にTRUEという文字が入っていたら印刷可。 というのをVBA教えて下さい。 よろしくお願いします。 Private Sub Workbook_BeforePrint(Cancel As Boolean)   With Worksheets("sheet1").CheckBoxes("チェック 1")     If .Value <> 1 Then      If MsgBox("印刷しますか?", vbYesNo) <> 6 Then Cancel = True      End If     End With End Sub

  • EXCEL VBA 印刷

    EXCEL VBA 印刷 初歩中の初歩で申し訳ありません・・・該当シート(Sheet1(名前は別名))の印刷をしたいと思い、ボタンの設定をしたのですが エラーとなります(画像を添付します。) お手数ですが、フォローの程宜しくお願いいたします。 参考までにコードも記載します。 Private Sub CommandButton9_Click() Range("A137").Select End Sub --------------------------上記はこんぼボックスで該当セルへジャンプしています。 Sub 印刷の実行() Worksheests("Sheet1").PrintOut End Sub

  • エクセル2007 VBA DTPicker

    エクセル2007 VBA のユーザーフォームに DTPicker を配置しています。 DTPicker のチェックボックスを常時表示させた状態でオン・オフをプログラムで切り替えるコードを教えて下さい。 例えば A1セルが空白であれば DTPicker のチェックボックスが表示された状態でオフ(False)にして A1セルに日付が入力されていれば チェックボックスをオン(True) にしてその日付を表示する方法です。 オフの時は当日を表示させる予定です。 よろしくお願いします。

  • エクセル(VBA)でリストボックス等を使用した印刷方法

    エクセルのフォームのリストボックス等を使用して、選んだシートのみを印刷することは出来るのでしょうか。(VBAを使用して) 現状 ・シートが15枚あります(シート1,2,3,4は条件入力用でシート5~15は様式でシート5~15は非表示です) ・シート1にリストボックスを配置したいです(リストボックスの選ぶ名前はシート5~15です) 例として ・リストボックスでシート7を選んだときに、シート7を印刷したいです その他 ・リストボックスでなくても、選んだシートが印刷される方法が他にあるのであれば、他の方法でもかまいません。

  • シートの名前の変更について(VBA)

    いつもお世話になっております。 VBAでシートの名前の変更を行おうと考えています。エクセルのシートで手動でシートの名前変更を入力すると使用できない文字は、入力が出来ないようになっています。VBAでテキストボックスへの入力を同じように規制する場合、Change()を使って1文字づつチェックするルーチェンを組むしかないのでしょうか? 取って置きの手法がありそうな気がしますが、思いつきません。どなたか?助けて頂けないでしょうか?よろしくお願いいたします。

  • エクセルシートでVBAについての質問です。

    VBA初心者です。 エクセルのシート上にコンボボックスを配置してリストを選択すると同じシート上のセルに選択されたリストが表示されるようにしたいのですが、よくわかりません。 コンボボックスのオブジェクト名は名前ボックスに表示される名前でいいのでしょうか? 詳しい方ご教授お願いします。

  • エクセル VBA 条件つきの印刷

    エクセルVBAにおいて、 例えば「セルA1が空白でないシートすべてを印刷する」 このようなコードは可能でしょうか? よろしくお願いします。 (エクセル2000)