• 締切済み

VBAでシート名を変数で選択する方法

ExcelのVBAの印刷でシート名の選択を変数で行いたいのですが、この変数をシート番号とシート名(文字列)のどちらでもできるようになりませんか? 目的は2~20までの全シート印刷と特定のページのみの印刷を同じプログラムで行いたいためです。 よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

多分20以上あるシートの中で、どの20シートなりを印刷したいと、プログラムに伝えるのか? それを質問に書かないから、わかりにくい。 例えばだよ、>シート名の選択の場合 (1)タブ位置的に数えて、左から20個とか (2)名前が「売上」とついているもの20シート >シートの中身の情報で判別する、場合 (3)シートのどこかのセルに「XX」が入っているとか。 (4)作成日で判断するとか (5)人間がシートタブ名やシートのデータ中身を見て選択する(クリックで)とか そういうことが、VBAプログラマーの勉強して、増やすべきレパートリーだろう。 それを文章でさえ表現できないようでは。 本件では突き詰めて言えば、>選択を変数で行いたい(=形式だ)の意味が不明。中身の説明が大切。

ganchan59
質問者

補足

補足します。 印刷のプログラムをサブルーティンで使いたいのでシートの選択をシート順の番号と文字列のシート名の両方で使えるようにしたいのです。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

No.1の補足です。 以下の方法を取りたいという事でしょうか。 > 2~20までの全シート印刷 Dim i As Long For i = 2 To 20 'Sheets.Count ←シートの最後までの場合 'イミディエイトにシート名を列挙 Debug.Print Sheets(i).Name '印刷のコードを記載 Next > 特定のページのみの印刷 Sheets("Sheet1").Index でシート番号が取得できますから印刷のコードは全シート印刷のコードと共有できます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

やりたいことがいまいちわかりませんが wsという変数でシートを選択するのでしたら以下のような方法ではどうでしょう。 Dim ws As Worksheet 'シート名 Set ws = Sheets("Sheet1") ws.Select MsgBox ws.Name Set ws = Nothing 'シート番号 Set ws = Sheets(2) ws.Select MsgBox ws.Name Set ws = Nothing

関連するQ&A