• ベストアンサー

Excel VBA シート印刷

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答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
  • ベストアンサー率66% (1719/2589)
回答No.4

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

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答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/17069)
回答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