エクセルのフォームのリストボックス等を使用して、選んだシートのみを印刷することは出来るのでしょうか。(VBAを使用して)
現状
・シートが15枚あります(シート1,2,3,4は条件入力用でシート5~15は様式でシート5~15は非表示です)
・シート1にリストボックスを配置したいです(リストボックスの選ぶ名前はシート5~15です)
例として
・リストボックスでシート7を選んだときに、シート7を印刷したいです
その他
・リストボックスでなくても、選んだシートが印刷される方法が他にあるのであれば、他の方法でもかまいません。
No.1
- 回答日時:
こんばんわ。
一応、VBAは理解できるという前提で回答いたします。
・まず、リストでシート名を選択するセルですが、シート名が忠実に入力できるか、あるいは、簡単のために数字で選択できるようにして表示形式で「シート5」などと表示させるようにする。
・印刷ボタンを配置する。
・ボタンをクリックしたときに、先ほどのセルを参照し、セルの値が5ならばシート5をアクティブにし、印刷を実行する。
と言う手順で問題ないと思います。
なお、そういう使用法であれば、ラジオボタンの方が使い勝手がいいと思います。
この回答への補足
ラジオボタンはどのようにして使用するのですか
ラジオボタンは名前も聞いたことがないので、今回の場合の使いかたを詳しく教えていただけたら、嬉しいのですが。
No.3
- 回答日時:
下のマクロを使ってください。
Sub Macro1()
Application.ScreenUpdating = False
'画面表示の静止
シート名 = "sheet" & Cells(1, 2) + 4
'セルB1に入った数字をシート名に置き換え
Worksheets(シート名).Visible = True
'シート表示(印刷用)
'プレビューです。変更可能です。
Sheets(シート名).PrintPreview
'Sheets(シート名).PrintOut Copies:=1
'一応プレビューとしましたが、上のもので
'置き換えると印刷します。
Worksheets(シート名).Visible = False
'シート非表示(戻し)
Application.ScreenUpdating = True
'画面表示の静止解除
End Sub
B1に結果が表示されるように
リストボックスを作ってください。
シート5 が 1
シート6 が 2
シート15 が 11
この回答への補足
すみませんが、実行時エラーがでるのですが
・シート5から15の名称を変更すると実行時エラー9(インデックスが有効範囲にありません)とでます
例:シート5を「333」 シート7を「あいう」 シート10を「様式」
シート名は固定です
・下記のCells(1, 2)はB1ですよね
たとえば、C5はCells(5, 3)でいいんですか?
シート名 = "sheet" & Cells(1, 2) + 4
よろしくお願いします。
No.4
- 回答日時:
シート名が番号ではない時は
Select Caseで処理を分けてください。
Select Case Cells(1, 2)
Case 1
シート名 = "333"
Case 2
シート名 = "あいう"
1ならシート名333を
2ならシート名あいう、のように
下の部分とSelectを置き換えてください。
シート名 = "sheet" & Cells(1, 2) + 4
Cellsの質問は、その通りです。
この回答への補足
たびたび、すみませんが、なぜエラーが出るのかわからないのですが、よろしくお願いします。
実行時エラー9(インデックスが有効範囲にありません)
Sub 様式指定印刷()
Application.ScreenUpdating = False '画面表示の静止
Select Case Cells(1, 2)
Case 1
シート名 = "工事施工伺"
Case 2
シート名 = "当初設計書"
Case 3
シート名 = "標準工期算定表"
Case 4
シート名 = "審査事項調書"
Case 5
シート名 = "工事設計変更伺"
Case 6
シート名 = "変更設計書"
Case 7
シート名 = "変更増減表"
Case 8
シート名 = "出来高設計書"
Case 9
シート名 = "工事検査依頼書"
Case 10
シート名 = "工事検査依頼書1"
Case 11
シート名 = "工事完成検査復命書"
Case 12
シート名 = "検査写真帳"
Case 13
シート名 = "検査員任命書"
Case 14
シート名 = "検査員復命書"
End Select
Worksheets(シート名).Visible = True 'シート表示(印刷用)・・・ここでエラーが出る
Sheets(シート名).PrintPreview 'PrintOut以降をPrintPreviewに変更するとプレビュー画面・・・シート表示(印刷用)を消した場合はここでエラーが出る
Worksheets(シート名).Visible = False 'シート非表示(戻し)
Application.ScreenUpdating = True '画面表示の静止解除
End Sub
No.5
- 回答日時:
1です。
ちょっと長いですが、ラジオボタンについて補足します。表示→ツールバー→フォームで「フォームツールバー」を表示させます。
その中の、テキストボックスの下あたりにxyzと書かれた枠のようなアイコンがあると思います。マウスでポイントすると「グループボックス」というポップヒントが表示されるはずです。それをクリックして、ワークシートの適当な場所に適当な大きさで枠を作成します。すると、グループ1とか表示された枠が描画されたと思います。
次に、先ほどのツールバーに、トリの目玉のようなアイコンがあると思います。そこをクリックして、先ほどのグループ枠の中をクリックするとオプション1等と書かれた○が表示されるので、それを3回繰り返します。
ここで、その○をそれぞれクリックしてみてください。すると、どれか一つの○をクリックすると、他の○の状態が反転するのにお気づきかと思います。これがラジオボタンです。ラジオのチューニングバンド(FM・AM・SW)切り替えみたいに、単一の動作のみを選択する場合に使うのでラジオボタンといいます。
ところで、先ほど貼り付けた○の上あたりでカーソルの形が(指に?)変わったときに右クリックすると、メニューに「コントロールの書式設定」というのがあるはずです。それをクリックして、「コントロール」というタブを開いてみてください。
その中に「リンクするセル」という項目があると思いますので、現在表示されている適当な番地を入力してダイヤログを閉じてみてください。
さて、その状態で先ほどのラジオボタンをクリックすると、さっき入力したセルに数字が表示されませんか? つまり、この数字を取得することで、動作の分岐ができるわけです。
あとは、どこかに「印刷」ボタンを配置して、それをクリックしたときに、指定したシートを印刷するようにすればいいです。
ブロックの流れとしては、
・印刷ボタンクリック
・リンクセルの数字取得
・数字に応じてワークシートを切り替え
・印刷実行
・メニューのシートに戻る
と言った感じになります。
No.6ベストアンサー
- 回答日時:
新しいものを作りました。
http://www.okweb.ne.jp/kotaeru_reply.php3?q=222287
書かれていた内容は間違っていませんでした。
上の新しいものもシート名を変更しただけで
他に変更はしていません。
これを参照して違いが無いか確認してください。
1.B1に数字はありますか
2.B1の数字はリストボックスで作られた数字ですか。
3.シートはありますか。
4.A列にシート名は入っていますか。
5.VBEでブレークポイントを設定、
ステップインで実行、変数「シート名」に
何が入るかを確認してください。
基本的には間違いないと思います。
あとは、シートとマクロの間で整合がとれていない
ためだと思います。
変更点を確認しながら落ち着いて見てみてください。
エラー内容は、シートを見つけられなかった
ということです。シートの指定、リストボックス部分
実際のシート、行・列のズレなどを確認ください。
いろいろ、ありがとうございました
夜遅くまで、回答いただきありがとうございます
実行時エラーが出ていた原因は、リストボックスがシート1にあり、リスト参照元が、別シートでリンクさせていたのでエラーが出ていました(もう少し、詳しく説明すれば、ご迷惑をかけることがなかったと反省しています)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Visual Basic(VBA) VBAで不特定枚数印刷をしたいです。 4 2022/08/02 07:30
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
EXCEL VBA ListboxのList印刷
Excel(エクセル)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
5
複数ファイルにある特定のシートを一度に印刷したい
Excel(エクセル)
-
6
Excelで質問です。ListBoxの項目を別bookから読込むには
その他(Microsoft Office)
-
7
EXCEL マクロ リストボックスよりシート名を選択してシートを選択
Excel(エクセル)
-
8
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
9
リストボックスの選択解除
Visual Basic(VBA)
-
10
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
11
VBAにて指定したセルをプルダウンで別シートリストから選択できるようにして、一括印刷をかけるコードに
Visual Basic(VBA)
-
12
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
13
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
-
14
VBA リストボックス内の値を複数選択し別シートに転記するには
Visual Basic(VBA)
-
15
Vba Userformを前面に出すについて
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルVBAでパスの¥マークに...
-
エクセルの複数シートの保護を...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
VBAで条件によりフォントサイズ...
-
VBAでシートコピー後、シート名...
-
複数シートの特定の位置に連番...
-
エクセルでファイル保存時に複...
-
シート名ではなく、相対位置で...
-
エクセルでシート名を自動入力...
-
前の(左隣の)シートを連続参...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルで前のシートを連続参...
-
excelでシート毎の最終更新日を...
-
EXCEL VBAで別のシー...
-
複数シートの色付きセルがある...
-
Accessのスプレッドシートエク...
-
シートを追加・名前を次月に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
-
Excel 連番を入力する方法
-
エクセル 計算式も入っていない...
-
エクセルで前シートを参照して...
-
エクセルでシート名を自動入力...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセルのシート名をリスト化...
おすすめ情報