• 締切済み

VBAの定義と印刷について

VBAで下記の様に定義をして印刷していますが、sheet"AAA","BBB"と同じく 新しいsheet"DDD"もの一緒に印刷したい場合の定義はどうなるのでしょう!教えて頂けますでしょうか。 よろしくお願いします。 別sheetの"sheet1"A列 AAA,BBB,CCC          B列 1,2,3  として印刷フラッグがある。 VBAでは Sub sheet1印刷() CNT = 4 CNT1 = 1 CNT2 = 1 TAKE = 0 CK = 30 Do Until CNT2 = CNT Do Until CNT1 = 4 If Sheets("sheet1").Cells(CNT1, 1) = Sheets("sheet1").Cells(CNT2, 3) Then TAKE = Sheets("sheet1").Cells(CNT1, 2) Select Case TAKE Case 1: Sheets("AAA").PrintOut Copies:=1 Case 2: Sheets("BBB").PrintOut Copies:=1 Case 3: Sheets("CCC").PrintOut Copies:=1 End Select CNT1 = 1 Exit Do Else: CNT1 = CNT1 + 1 End If Loop CNT2 = CNT2 + 1 Loop End Sub

みんなの回答

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.3

すみません No.2で【保守】以降に訂正です。 【保守】 次に一つ増やすときは、CNT = 5 の数字を一つ増やし、 Case 4:のあとにCaseの数字を一つ増やし 「Case 5: Sheets("[あらたなシート名]").PrintOut Copies:=1」の文を挿入して下さい。

fukaideep
質問者

お礼

ありがとうございました。印刷できました。 今後も宜しくお願いします。

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.2

こんにちは 元々のマクロを利用するなら、下記の2行を矢印の後のように修正。 CNT = 4 → CNT = 5 Do Until CNT1 = 4 → Do Until CNT1 = CNT それと Select Case TAKEからEnd Selectまでの空いている行に下記を追加。 Case 4: Sheets("DDD").PrintOut Copies:=1 【保守】 次に一つ増やすときは、CNT = 5 の数字を一つ増やし、 Case 4:のあとにCaseの数字を一つ増やし 「Case [CNTの数字]: Sheets("[あらたなシート名]").PrintOut Copies:=1」の文を挿入して下さい。

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

こんにちは このマクロで印刷されていたということなので、ちゃんと動いているということを前提にC列目には何がありますか? >If Sheets("sheet1").Cells(CNT1, 1) = Sheets("sheet1").Cells(CNT2, 3) Then 上記の Cells(CNT2, 3)の「3」はC列を表していると思うので。

fukaideep
質問者

補足

ありがとうございます。質問には書き忘れたが下記のようになっています。 別sheetの"sheet1"A列 B列 C列             AAA 1  AAA             BBB 2  CCC             CCC 3          よろしくお願いします。

関連するQ&A

  • VBA定義について

    ExcelでVBAを使用してデータを曜日に寄って抽出する様定義されているのをみました。 ところで下記のDim TBL_E(2, 31) As Integer はどういう意味かまた [XXX = 1: OFF_CELL = 14: CNT1 = 1: CNT2 = 1]ってたとえですか。意味はちょっと分かりません。 初心者の者ですがよろしくお願いします。 Dim TBL_E(2, 31) As Integer YOUBI = Worksheets("AAA").Range("C11") XXX = 1: OFF_CELL = 14: CNT1 = 1: CNT2 = 1 Do Until CNT2 >= 8 If XXX <> Worksheets("AAA").Cells(OFF_CELL, 3) Then Select Case YOUBI Case 1: Worksheets("BBB").Range("E3") = "日" Worksheets("AAA").Range("AE5") = "SUN" Case 7: Worksheets("BBB").Range("E3") = "土" Worksheets("AAA").Range("AE5") = "SAT"          If CNT1 <= 8 Then TBL_E(1, CNT1) = XXX If CNT1 = 1 Then Worksheets("AAA").Range("D16") = YOUBI End If

  • VBAで自動印刷を行いたい

    "A1"セルに数字の"1"が入力されて印刷、続いて"A1"セルに数字の"2"が上書されて印刷、 続いて"A1"セルに数字の"3"が上書されて印刷、・・・・というように指定した数字になるまで印刷を行う(指定する数字は"B1"セルに入力)にはどうしたらよいでしょうか? 下記のVBAを考えましたがうまくいきません。正しい記述を教えて下さい。 Sub 印刷() Dim myCnt As Long myCnt = 1 Do Until myCnt > Range("B1") Range("A1").Value = myCnt Sheets("Book1").PrintOut Copies:=1 myCnt = myCnt + 1 Loop End Sub

  • VBAで印刷したい。

    シートが3枚あります。 ・回答フォーム ・採点 ・判定 この"回答フォーム"のシートにボタンを作成して クリックすると"採点"の印刷範囲を印刷したいのですが うまく行きません。 よろしくお願い致します。 Private Sub 採点を印刷_Click() Sheets("採点").Select Range("$A$1:$O$41").Select Selection.PrintOut copies:=1 Sheets("回答フォーム").Select End Sub

  • 印刷枚数を指定して印刷(印刷しないシートを含む場合)

    マクロ(VBA)の超超初心者です。 エクセルのブックの全シート(13sheet)の印刷を1つのシートで管理するマクロを作りたいと思っています。 下記のマクロでチェックしたシートのみ印刷することは可能になりました。 Sub チェックしたシートの印刷() Dim rng, shChk, PrtSh For Each rng In Range("IDX") If rng.Offset(0, -1) = 1 Then shChk = shChk & rng.Value & "," End If Next shChk = Left(shChk, Len(shChk) - 1) PrtSh = Split(shChk, ",") Sheets(PrtSh).Select ActiveWindow.SelectedSheets.PrintOut End Sub そこにさらに印刷枚数を指定して印刷したいのですが、下記のマクロだと、0枚(印刷しないときの)の設定ができません、、、 0枚でもマクロを実行できるよにするにはどうしたらよいのでしょうか、、、 さらに、このマクロを簡単に書きたいのです。(ほぼ同じことの繰り返しなので、、、、) Sheets("sheet1").PrintOut Copies:=Range("A1").Value Sheets("sheet2").PrintOut Copies:=Range("A2").Value ・     ・ ・ Sheets("Sheet13").PrintOut Copies:=Range("A13").Value End Sub 超超初心者があつかましい質問ですが、ご教授のほうよろしくおねがいいたします。

  • Excel VBAで他のシートを印刷するとき

    シート1からシート2を表示しないで印刷したいんですが下の記述だと一瞬ですがシート2が表示されます、どのようにすればシート1のままシート2を印刷することができるのでしょうか、よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2004/7/23 ユーザー名 : H ' Sheets("Sheet2").PrintOut Copies:=1, Collate:=True End Sub

  • エクセルVBA実行後にファイルを自動で閉じるVBA

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?

  • VBAで印刷の成功判定

    Excel2003でVBAをくんでいます。 印刷の成功判定を行いたくて、以下のFunctionをくみました。(印刷失敗時にFalseを返したい)しかし、印刷する処理で、実行エラーが発生してしまいます。 原因がわかりません。どなたかお教えください。よろしくお願いします。 '決裁処理用自動印刷機能 印刷処理の成功失敗を知りたい Function PrintAuto() PrintAuto = True '通常使うプリンタで印刷 Arrayに複数シート設定 Sheets(Array(SHEET_DETAIL1, SHEET_DETAIL2, SHEET_DETAIL3)).Select Sheets("ほげほげ").Activate ↓ここでコンパイルエラー発生(Functionまたは変数が必要です) PrintAuto = ActiveWindow.SelectedSheets.PrintOut(Copies:=1, Collate:=True) Sheets(SHEET_DETAIL1).Select Sheets(SHEET_DETAIL1).Activate End Function

  • VBA 実行時エラー1004(その2)

    毎度お世話になっております。 シート「sheet2」のA列のリスト内容を、シート「M_得意先」のリストからVLOOKUPして、指定のセルに書き出していくというコードを作成してみたのですが、VLOOKUPを実行する段階でエラーが出てしまいます。 少し変更して、同一シート内でのVLOOKUPは問題なく実行できたのですが...原因をご存知の方教えてください。 Dim b As String Dim endRcell2 As Long Dim cnt10 As long Sheets("sheet2").Select Sheets("sheet2").Range("A1").CurrentRegion.Select 'データ全体選択 Selection.SpecialCells(xlCellTypeLastCell).Select '最終行検出 endRcell2 = ActiveCell.Row cnt10 = 2 Do ↓実行時エラー1004が出る行 b = Application.WorksheetFunction.VLookup(Sheets("Sheet2").Range("A" & cnt10).Value, Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)), 2, False) ↑実行時エラー1004が出る行 Sheets("sheet2").Range("E" & cnt10).Value = b cnt10 = cnt10 + 1 Loop Until cnt10 = endRcell2

  • VBA 印刷範囲設定がうまくいかない

    変数cntに値を代入し印刷範囲が変わるという事を、以下のコードで実行しようとしています。 Sub Macro1() cnt = 9 Sheets("A").Activate 範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) ActiveSheet.PageSetup.PrintArea = 範囲 上記のコードですと、シート「A」のセルA1~J33までが印刷範囲になると思ったのですが、実行すると全く関係ないセルまで印刷範囲になってしまいます。 「A」シートには罫線やデータが入力されているセルが他にもあり、どうやらそれらのセルも同じく印刷範囲とされてしまっているようなのです。(例えばK列に罫線が引いてあり、セルに色がついているとK列まで印刷範囲になる) Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)).select とすれば、望みどおりのセル範囲A1~J33がきちんと選択されるのですが、印刷範囲ではなぜこのようなことになってしまうのでしょうか。

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

専門家に質問してみよう