毎月第一日曜と第一月曜の時のみ塗りつぶす方法

このQ&Aのポイント
  • 質問ですが、毎月第一日曜日の場合には「日曜日印刷」シートのCK48とAJ96のセルを塗りつぶし、毎月第一月曜日の場合には「月曜日印刷」シートのCK52とAV96のセルを塗りつぶす方法について教えてください。
  • 質問ですが、毎月第一日曜日の場合には「日曜日印刷」シートのCK48とAJ96のセルを塗りつぶし、毎月第一月曜日の場合には「月曜日印刷」シートのCK52とAV96のセルを塗りつぶす方法が知りたいです。
  • 毎月第一日曜日の場合には「日曜日印刷」シートのCK48とAJ96のセルを塗りつぶし、毎月第一月曜日の場合には「月曜日印刷」シートのCK52とAV96のセルを塗りつぶす方法を教えてください。
回答を見る
  • ベストアンサー

毎月第一日曜と第一月曜の時のみ塗りつぶす方法

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 ActiveWorkbook.Save ActiveWindow.Close 「日曜日印刷」「月曜日印刷」各シートのAU25には=TODAY()が入力されています。 質問ですが各シートのAU25の日付が第一日曜日の時は「日曜日印刷」シートのCK48とAJ96のセルが塗りつぶされて、AU25の日付が第一月曜日の時は「月曜日印刷」シートのCK52とAV96が塗りつぶされる方法はどのようにしたら良いでしょうか?

noname#247334
noname#247334

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.3

> 「日曜日印刷」「月曜日印刷」が選択された場合はどの様にすれば良いのでしょうか? 日付のあるセルは多分AU25ではなくK1になるのかとも思いますが、一応質問時のAU25にしてますので適宜変更してください。また、BOMonthの取り出し方も変更してます。 Sub 印刷() Dim PrintSheetName As String Dim BOMonth As Date If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then Exit Sub End If ' A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True PrintSheetName = Format(Range("K1").Value2, "aaaa") & "印刷" BOMonth = Format(Range("AU25").Value2, "yyyy/mm/1") Sheets(PrintSheetName).Select If PrintSheetName = "日曜日印刷" Then With Sheets("日曜日印刷") If Range("AU25") = BOMonth - Weekday(BOMonth - 1) + 7 Then .Range("CK48").Interior.ColorIndex = 4 .Range("AJ96").Interior.ColorIndex = 4 Else .Range("CK48").Interior.ColorIndex = xlNone .Range("AJ96").Interior.ColorIndex = xlNone End If End With ElseIf PrintSheetName = "月曜日印刷" Then With Sheets("月曜日印刷") If Range("AU25") = BOMonth - Weekday(BOMonth - 2) + 7 Then .Range("CK52").Interior.ColorIndex = 4 .Range("AV96").Interior.ColorIndex = 4 Else .Range("CK52").Interior.ColorIndex = xlNone .Range("AV96").Interior.ColorIndex = xlNone End If End With End If ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close End Sub

noname#247334
質問者

お礼

この度はありがとうございました。 非常に助かりました。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.2

No1の訂正です。 No1だと該当曜日以降は塗りつぶしっぱなしになりますので該当曜日以外は塗りつぶしなしにしなければいけないような気もしたので以下のように変更してください。 Sheets("日曜日印刷").Select With Sheets("日曜日印刷") If Range("AU25") = BOMonth - Weekday(BOMonth - 1) + 7 Then .Range("CK48").Interior.ColorIndex = 4 .Range("AJ96").Interior.ColorIndex = 4 Else .Range("CK48").Interior.ColorIndex = xlNone .Range("AJ96").Interior.ColorIndex = xlNone End If End With ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select With Sheets("月曜日印刷") If Range("AU25") = BOMonth - Weekday(BOMonth - 2) + 7 Then .Range("CK52").Interior.ColorIndex = 4 .Range("AV96").Interior.ColorIndex = 4 Else .Range("CK52").Interior.ColorIndex = xlNone .Range("AV96").Interior.ColorIndex = xlNone End If End With

noname#247334
質問者

お礼

この度はありがとうございました。 非常に助かりました。

noname#247334
質問者

補足

いつもありごとうございます。勉強になります。 以前回答して頂いた Sub 印刷() Dim PrintSheetName As String If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then Exit Sub End If ' A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True PrintSheetName = Format(Range("K1").Value, "aaaa") & "印刷" Sheets(PrintSheetName).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close End Sub このVBAでPrintSheetName = Format(Range("K1").Value, "aaaa") & "印刷" で選択されたシートが「日曜日印刷」「月曜日印刷」が選択された場合はどの様にすれば良いのでしょうか?

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.1

以下のような感じでいかがですか。どこのタイミングで色を付けるのかわからなかったのでシートが選択された後に色を塗ることにしています。 また、色番号は以下のページを参考にするか http://www.relief.jp/itnote/archives/000482.php マクロの記録でセルを塗りつぶしてそのコードを入れ込んでください。 Sub 印刷() Dim BOMonth As Date BOMonth = Year(Range("AU25").Value2) & "/" & Month(Range("AU25").Value2) & "/" & "1" '中略 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("日曜日印刷").Select If Range("AU25") = BOMonth - Weekday(BOMonth - 1) + 7 Then With Sheets("日曜日印刷") .Range("CK48").Interior.ColorIndex = 4 .Range("AJ96").Interior.ColorIndex = 4 End With End If ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select If Range("AU25") = BOMonth - Weekday(BOMonth - 2) + 7 Then With Sheets("月曜日印刷") .Range("CK52").Interior.ColorIndex = 4 .Range("AV96").Interior.ColorIndex = 4 End With End If ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close

noname#247334
質問者

お礼

この度はありがとうございました。 非常に助かりました。

関連するQ&A

  • 指定する曜日の時に特定のエクセルファイルを印刷

    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です。 ボタンが設置されているシートのK1には「TODAY()」の式が入っています。これは当日の日付を自動で表記する様になっています。 質問ですがボタンを押すと毎日印刷シート+K1に記入されている日付の曜日のシートのみを印刷するVBAはどの様にすれば良いでしょうか? 例えば今日(2016年9月10日)で言うと土曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+土曜日印刷のみ出力されると言う事です。 明日(2016年9月11日)は日曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+日曜日印刷シートのみが出力される形です。 よろしくお願いします。

  • エクセル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はどの様に追加すれば良いでしょうか?

  • Excel VBAで自動印刷プログラムの作り方を教えて下さい。

    あるファイルにある全てのグラフを印刷するマクロを作りたいのですが、 どのようにすれば良いのでしょうか? Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub に何を付け足せば良いのでしょうか? 何卒よろしくお願い致します。

  • VBAでA3サイズに印刷したい

    Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2007/5/23 ユーザー名 : Administrator ' ' Sheets("印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub マクロの自動作成でこのように作りました これをA4からA3に拡大印刷したいのですが、どのようにしたら良いのでしょうか教えてください、よろしくお願いします。

  • マクロ 連続印刷

    マクロ初心者です。 ピボットテーブルでマクロを使って連続印刷をしようと思いました。 一応やってみて連続で印刷は出来たのですが番号がないときエラーになってしまします。 たとえば"562"という番号がないときエラーになって止まってしまいます。 番号がないときは飛ばして印刷するにはどのようにしたらよいでしょうか? よろしくお願いします。 Sub 連続印刷() ' ' 連続印刷 Macro ' ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "562" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "947" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "950" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "952" End Sub

  • Microsoft Visual Basicについて質問します。

    シート名「委託内訳」でAN70がスペースの時に1ページのみ印刷し,スペースでない時に1~2ページを印刷したい時,下記のマクロでは2ページ目が印刷出来ません。 印刷できる方法は何かありますか? よろしくお願いします。 Sheets("委託内訳").Select Range("AN70").Select ActiveCell = ATAI If ATAI = "" Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Else ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _ :=True End If

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

    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を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • 複数のシートをマクロで印刷

    印刷したい複数のシートをアクティブ状態にして以下のマクロを実行すると、余計に印刷されてしまいます。 Sub Test()  Dim ws As Worksheet  For Each ws In ActiveWindow.SelectedSheets   ActiveWindow.SelectedSheets.PrintOut _   Copies:=1, Collate:=True  Next ws End Sub 例えば、Sheet1とSheet2を選択して実行すると、Sheet1とSheet2が二部ずつ印刷されます。また、Sheet1とSheet2とSheet3を選択して実行すると、それぞれが三部ずつ印刷されます。 それぞれを一部ずつ印刷するためには、マクロをどう直せばいいでしょうか?

  • excel vba 印刷部数設定

    excel 2002を使用しています。 マクロで印刷および印刷プレビューせずに、印刷部数を設定する方法を探しています。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True  ではプレビューしてしまいます。 ActiveWindow.SelectedSheets.PrintOut Copies:=1  では印刷してしまいます。 印刷およびプレビューしない方法はないものなのでしょうか。 よろしくお願いします。

  • エクセル マクロの作り方

    はじめまして エクセルのマクロ初心者です。 ツール→マクロ→新しいマクロの記録にて 開いているシートをA1~V68まで(すべての範囲でもOKです)をコピーし、別の貼り付け用シートに貼付、3つのタブを印刷して閉じ、開いているシートを表示する。という内容のマクロを登録しました。 台紙で以上のマクロを登録し、台紙を複製しました。 マクロを実行すると複製されたシートのA1~V68までではなく、台紙のA1~V68までが印刷されて困っています。 どうすれば解決するでしょうか???詳しい方おしえてください。 尚、下記に記録されたものを載せておきますので、訂正部分など教えてもらえたら助かります。 (マクロの記録の上部を訂正すると良いような気はするのですが…。初心者なのもので範囲の指定の仕方がわるいのでしょうか???) よろしくお願いします。 Sub マクロ名() ' ' マクロ名 Macro ' マクロ記録日 : 2007/10/14 ユーザー名 : ??? ' ' Application.Run "hozon1.初期" Range("A1:V68").Select Selection.Copy ChDir "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿" Workbooks.Open Filename:= _ "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xls" Cells.Select ActiveSheet.Buttons.Add(509.25, 1.5, 72.75, 12.75).Select ActiveSheet.Paste Sheets("大型1").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("大型2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("小型1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWindow.Close ActiveWindow.SmallScroll Down:=-51 Range("J3").Select End Sub

専門家に質問してみよう