• 締切済み

ブックの中の1枚だけ選んで印刷したい

win7とExcel2007でマクロ作成中の初心者です。 以下、ファイルの中の複数シートを印刷できました。 Private Sub 請求書印刷_Click() Application.ScreenUpdating = False Unload Me 請求書の印刷100 '請求書印刷 Worksheets(1).Select ActiveWindow.DisplayHorizontalScrollBar = False End Sub Sub 請求書の印刷100() ' Dim i As Integer For i = 1 To Worksheets.Count - 8 With Worksheets(i) If .Range("F11").Value <> 0 Then .PageSetup.PrintArea = "$B$1:$U$44" .PrintOut End If End With Next i Worksheets(1).Activate End Sub ------------------------------------ 今度は、同一のファイルから、指定の単一のシートを印刷したいので 以下のコードを実行すると、 Private Sub 単数印刷_Click()' Application.ScreenUpdating = False Unload Me Unload G印刷 Dim i As Integer With 名簿リスト2 For i = 0 To .ListCount - 1 If .Selected(i) Then 請求書の印刷範囲200 ' Worksheets(.list(.ListIndex)).PrintPreview Worksheets(Split(.list(.ListIndex - 0), " ")(1)).PrintPreview ' End If Next i End With ActiveWindow.DisplayHorizontalScrollBar = False GH印刷.Show End Sub Sub 請求書の印刷範囲200() ' ActiveSheet.Unprotect Dim i As Integer For i = 1 To Worksheets.Count - 8 With Worksheets(i) .PageSetup.PrintArea = False '印刷範囲のクリア If .Range("F11").Value <> 0 Then .PageSetup.PrintArea = "$B$1:$T$44" End If End With Next i Worksheets(1).Activate End Sub 以下の行が黄色くなりマクロがエラーとなり停止します。 エラーは 実行時エラー9 インデックスが有効範囲にありません となります。 Worksheets(Split(.list(.ListIndex - 0), " ")(1)).PrintPreview ' これと同様のファイルで試すと何なく1枚だけ印刷できました。 このエラーの原因はなんでしょうか?解決方法を教えてください。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> このエラーの原因はなんでしょうか?解決方法を教えてください。 シート名とリストで選択しているようですが、半角スペース区切りを期待しているようですね。 半角スペースの右側。ちゃんとシート名と一致してますか?

aitaine
質問者

お礼

Worksheets(Split(.list(.ListIndex - 0), "_ ")(1)).PrintPreview 'と言うコードに 変更したらエラーがでなく、無事印刷できました。

aitaine
質問者

補足

せっかく教えていただいたのに、意味を理解できません。情け無いですが・・。 シート名とリストで選択しているようですが -----はいそうです。 半角スペース区切りを期待している -----すいませんわかりません。 半角スペースの右側。ちゃんとシート名と一致してますか? -----すいません具体的な例で教えていただくとありがたいのですが・・。 お願いします。

関連するQ&A

  • エクセルVBA印刷範囲指定とヘッダーフッター

    1か月のうちの前期と後期のシートがそれぞれあり、前期シートを範囲指定して領収書の一部を印刷したいのですがなぜか、前に作ったヘッダーとフッターが前期だけ印刷されてしまいます。 どこに隠れているのか謎なのです。前に悩みながら作ったシートがどこかに隠れているのでしょうか? また、同じ様式のシートなのですが前期は80%にしなくてもなぜか一枚に収まります。 不思議でなりません・・・全部消したはずなのですが Sub 印刷範囲設定領収書前期() With Worksheets("領収前期") .PageSetup.PrintArea = "G1:BB91" .PrintPreview End With End Sub Sub 印刷範囲設定領収書後期() With Worksheets("領収後期") .PageSetup.Zoom = 80 .PageSetup.PrintArea = "G1:BB91" .PrintPreview End With End Sub

  • リストボックスから選択したシートを削除したい

    Excel2007でマクロ作成の初心者です。 リストボックスの選択項目のワークシートを削除したいのですが、 「インデックスが有効範囲にありません。」のエラーが発生し、 先に進めません。どうしたらよろしいでしょうか? ’--------------------- Private Sub 顧客削除_Click() Application.ScreenUpdating = False Unload Me Unload DS請求フォーム Dim i As Integer With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then ' Worksheets(.list(.ListIndex)).Delete Worksheets(Split(.list(.ListIndex - 0), " ")(1)).Activate '←ここでエラー発生 ActiveSheet.Delete End If Next i End With MsgBox "選択の顧客を削除しました。" End Sub ’------------------------- Private Sub UserForm_Initialize() Workbooks("請求.xls").Activate Dim i As Integer Const EXCEPT_NAME = "経理●一覧●基本●" For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then 顧客リスト.AddItem i & " " & Worksheets(i).Name End If Next i End Sub ’----------------------

  • 複数シートをVBAで印刷

    エクセル2010VBAを使って仕事の効率化を勉強中です。 歳入日計表のシート31日分を作り、歳入月計表として合計をまとめていますが 日々印刷範囲を決めて一日分のシート印刷するのをVBA処理したいのですが できません。 1日分はこんな感じでできるのですが・・・ 31日分をどのように処理すれば日々印刷可能になるのでしょうか? お願いいたします! Sub 日計表印刷設定() With Worksheets("1") .PageSetup.PrintArea = "A2:G71" .PageSetup.LeftMargin = 55 .PageSetup.TopMargin = 40 .PageSetup.Zoom = 80 .PrintPreview End With End Sub

  • VBAの範囲印刷設定を修正したいのですが

    VBAの初心者です。詳しく教えてください。 1.下記のVBAでシートを非表示にしたときに実行時エラー1004が出るのですが  どうしたらよいのですか。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub printappointedrange() Worksheets("シート1").Activate Range("A1:AB42").Select 'セル範囲の選択 With ActiveSheet .PageSetup.PrintArea = Selection.Address '印刷範囲の指定 .PrintOut '印刷 .PageSetup.PrintArea = False '印刷範囲のクリア End With End sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 2.シートに印刷ボタン作成して、印刷はできるのですが、印刷する前にプリンターの設定を変更する方法は無いのですか。

  • 2ページ目以降の行タイトルを3行目にしたいのですが

    1ページ目は普通に印刷して、2ページ目以降の行タイトルを3行目にもって行きたいのですが、どの様にしたらいいか教えて下さい。 宜しくお願いします。 With Worksheets("Sheet1") .PageSetup.PrintTileRows = "$A3:$P3" .PageSetup.Orientation = xlLandscape .PageSetup.PrintArea = Range("A1",Range("P65536").End(xlUp)).Address .PrintPreview End With

  • エクセル2007(VBA)で選択セルを1枚に印刷する方法

    表題のとうりなのですが・・・ VBAで例えば("A1:K2")という範囲と("A125:K244")という範囲を 1枚のA4紙に印刷したいのですが・・・ With Worksheets("A") .PageSetup.PrintArea = "A1:K2,A125:K244" .PrintPreview End With とすると A1:K2の範囲とA125:K244の範囲が1枚ずつ2枚にわかれて印刷されてしまいます。 始めたばかりの素人で大変困っております。 ご教授お願いいたします。

  • 印刷範囲を設定するvbaコード

    エクセルシートの印刷範囲を設定するvbaコードで Sub Macro1() With ActiveSheet.PageSetup .PrintArea = "$A$1:$c$10" End With End Sub としてるのですが、 "$A$1:$c$10"の部分を Range(Cells(1, 1), Cells(10,3)) 形式でやりたいのですが、 うまくできません。 Sub Macro1() With ActiveSheet.PageSetup .PrintArea = Range(Cells(1, 1), Cells(10,3)) End With End Sub としても、全部が印刷範囲として選択されてしまいます。 というか、印刷範囲が設定されません。

  • 印刷プレビュー表示後ユーザーフォームが閉じません。

     下記のコードで印刷プレビューが表示された後,UserForm3が閉じるようにしてありましたができなくなりました。プレビューの閉じるボタンをクリックするとUserForm3一緒に閉じます。解決策がありましたらお願いします。勉強不足でわかりませんので。 Sub 印刷範囲() Application.ScreenUpdating = False Dim ret As Integer ret = MsgBox("印刷範囲を、" & ActiveSheet.Range("B59").Value & "勤務表上に" _ & "表示します。  よろしいですか?", _ vbOKCancel + vbQuestion, "メイン処理") Select Case ret Case vbOK UserForm3.Show vbModeless UserForm3.Repaint With Worksheets("メイン") .PageSetup.CenterHorizontally = True .PageSetup.CenterVertically = True .PrintPreview End With Unload UserForm3 End Select Application.ScreenUpdating = True End Sub

  • Excel 印刷のマクロ

    前任がExcelで作成した請求書のファイルで 「全印刷」のボタンを実行すると 顧客の請求書を1枚ずつ印刷する仕組みになっています。 新しい顧客ができたら、別のシートのリストに名前や金額を追加していくようになっているのですが、しばらくはうまくいっていたのに、あるときから、新しい顧客の請求書だけが印刷されなくなってしまいました。 そこで、全印刷のマクロのコードを確認すると下記のようになっていました。 'リストを1行1枚の伝票形式で印刷するマクロ Sub 全印刷() Worksheets("請求書").Activate TDATA = Range("g3") For 伝票カウンタ = 1 To TDATA Range("C3") = 伝票カウンタ STYPE = Range("E3") If (STYPE = 0) Then Else 印刷 End If Next 伝票カウンタ End Sub Sub 印刷() ' Range("B4:G48").Select ActiveSheet.PageSetup.PrintArea = "$b$4:$g$48" ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub と記述がありました。 この中で、印刷するリストや範囲に関係するような記述が分かれば何とかなるのかと考えているのですが・・・。 何か分かる方、教えていただけませんか?おそらく、直接的な印刷対象の記述はないように思えるのですが・・・ ヒントでもあればと思っています。

  • リストボックスについて

    リストボックスからデータを転記したいのですが、 実行時エラー"1004"が出てしまい、どうしてもうまくいきません。 どなたか原因を教えてください。 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim i As Long With Worksheets("sheet2") i = .Range("F47").End(xlUp).Row + 1 .Range(i, 6).Value = ListBox1.List(ListBox1.ListIndex, 0) .Range(i, 12).Value = ListBox1.List(ListBox1.ListIndex, 1) .Range(i, 26).Value = ListBox1.List(ListBox1.ListIndex, 2) .Range(i, 28).Value = ListBox1.List(ListBox1.ListIndex, 3) .Range(i, 34).Value = ListBox1.List(ListBox1.ListIndex, 4) .Range(i, 37).Value = ListBox1.List(ListBox1.ListIndex, 5) End With Unload Me End Sub

専門家に質問してみよう