チェックボックスで選択た複数のシートを1つのpdfにできるようにしたいのですが、ご指導いただければ幸いです。
シートは「1月講座室予約表」から「12月講座室予約表」まであります。
CheckBox1は1月講座室予約表、CheckBox2は2月講座室予約表・・・に対応させたいです。
次のコードを書いてみたのですが、「Sheets(Array(MySht(i))).Select」のところが「インデックスが有効範囲にありません」と表示されてしまいます。
Private Sub CommandButton1_Click()
Dim MySht(11) As Variant
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
MySht(i) = i&"月講座室予約表"
End If
Next i
Sheets(Array(MySht(i))).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:=ActiveWorkbook.Path & "¥" & "予約表" & Format(Date, "yyyymmdd") & ".pdf"
End Sub
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
既に複数の回答がついていますが、ご質問者のオリジナルのコードから最低限の修正でご希望の挙動になるようにするなら、以下ではいかがでしょうか
Private Sub CommandButton1_Click()
Dim MySht() As Variant
Dim i As Long
Dim j As Long
j = -1
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
j = j + 1
ReDim Preserve MySht(j)
MySht(j) = i & "月講座室予約表"
End If
Next i
Sheets(MySht).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" & "予約表" & Format(Date, "yyyymmdd") & ".pdf"
End Sub
残念ながらオリジナルのコードにはbonaronさんの回答にあるようなエラー回避の判定がありません。
このため、どのチェックボックスにもチェックを入れなかった場合、上記のVBAではエラーになります。
「チェックボックスに一つもチェックが入らなかったら」を判別してエラーを回避するロジックを追加してください。
No.4
- 回答日時:
シート名を配列に入れる、ということで
シート名に使用できない文字をデリミッターにする、
という小技を使ってみました。
Private Sub CommandButton1_Click()
Dim MySht As Variant
Dim strName As String
Dim i As Long
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
strName = strName & "/" & i & "月講座室予約表"
End If
Next i
If strName = "" Then
MsgBox "選択されていません"
Exit Sub
End If
MySht = Split(Mid(strName, 2), "/")
Sheets(MySht).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" & "予約表" & Format(Date, "yyyymmdd") & ".pdf"
End Sub
No.3
- 回答日時:
>複数のシートを1つのpdfに
#2は頓珍漢な回答でしたね
ActiveSheetとなっていたので コード見て勘違いしました。。。
#1 +
ActiveWorkbookとすれば良いかと思います
Dim i As Integer
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
Sheets(i & "月講座室予約表").Select False
End If
Next i
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:=ActiveWorkbook.Path & "\" & "予約表" & Format(Date, "yyyymmdd") & ".pdf"
No.2
- 回答日時:
ご質問の部分(エラー)は#1に書いた通りですが、全体を見ると
シート選択を実行したいのかなと思いきやActiveSheet・・・
(複数選択してもActiveSheetは1つです)
仮に複数のPDF出力が実行されても
"¥" & "予約表" & Format(Date, "yyyymmdd") & ".pdf"
同じ名前のファイルで結果最後のシートのみのPDFが残る(1ファイルのみ)
CheckBoxで選択したシートをPDFにエキスポートするなら、それこそ選択する必要は無いと思います(名前はシート名+日付)
①
Dim i As Integer
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
Sheets(i & "月講座室予約表").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" & i & "月講座室予約表" & Format(Date, "yyyymmdd") & ".pdf"
End If
Next i
なんとなく配列が出てきた意図が分かりました
配列を使う場合は、(インデックスが分かり難いかも知れませんが)
②
Dim MySht() As String
Dim i As Integer
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
ReDim Preserve MySht(i - 1)
MySht(i - 1) = i & "月講座室予約表"
End If
Next i
For i = 0 To UBound(MySht)
Sheets(MySht(i)).ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" & MySht(i) & Format(Date, "yyyymmdd") & ".pdf"
Next
①②共に同じ結果が得られると思います
No.1
- 回答日時:
こんばんは
配列に拘りますか?2度手間になるだけなので・・
普通に書いた方が良いと思います
For i = 1 To 12
If Me.Controls("CheckBox" & i).Value = True Then
Sheets(i & "月講座室予約表").Select False
End If
Next i
配列にしてもそのまま選択にしても エラー対策が必要と思われる処理ですね
配列を使いたい・・
1つアドバイスを書くのなら、配列に配列は入れられません なので
文字列を作る必要がありますが、あれこれ面倒だと推測します
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
何歳が一番楽しかった?
自分の人生を振り返ったとき、何歳のころが一番楽しかったですか? 子供の頃でしょうか、それとも大人になってからでしょうか。
-
我が家のお雑煮スタイル、教えて下さい
我が家のお雑煮スタイル、教えて下さい! (お汁)味噌汁系? すまし汁系? (お餅)角餅? 丸餅? / プレーンなお餅? あんこ餅?
-
エクセルでチェックボックスを使用してシートの抽出及び一括印刷
Excel(エクセル)
-
Excel VBA 複数シートの一括印刷について
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
風俗店を予約する際について 一...
-
ドコモショップの来店予約 家族...
-
ホットペッパービューティーで...
-
同棲している彼とのペースがあ...
-
美容院の予約 何日前がBEST?
-
美容院でカット、カラーの予約...
-
初診で皮膚科に行く時に受付で...
-
例えば自分が17日の12時に予約...
-
自分から食事に誘った場合は予...
-
エステの予約をすっぽかしてし...
-
美容院の予約内容(メニュー)は...
-
教えてください。 MNP予約番...
-
シティヘブンという風俗サイト...
-
大人から小児の乗車券への乗車...
-
ひかりからさくらへ 新大阪での...
-
月曜にサンダーバードを乗るの...
-
特急券(指定席)と乗車券を前...
-
往復航空券の復路を乗らず捨て...
-
新幹線 のぞみ 25号の座席表
-
旅行会社の連絡不備がある場合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
風俗店を予約する際について 一...
-
人数様?
-
ドコモショップの来店予約 家族...
-
『予約優先』『予約制』『完全...
-
ホットペッパービューティーで...
-
エステの予約をすっぽかしてし...
-
初診で皮膚科に行く時に受付で...
-
Accessで予定表を作成しようと...
-
美容院でカット、カラーの予約...
-
なぜExit Subがあるのかわかり...
-
本屋での本の予約なんですが、 ...
-
昨日仕事が休みだったので車の...
-
予約票忘れた
-
美容院の予約内容(メニュー)は...
-
ホットペッパーの美容院の予約...
-
DOCOMO来店するには完全予約制...
-
自分から食事に誘った場合は予...
-
「アマデウス」「ガリレオ」で...
-
シートを選択して、1つのPDFに...
-
取消・予約の繰り返して2月ま...
おすすめ情報