• 締切済み

エクセルのVBAで質問があります。

現在自分はカレンダーを作成していて、カレンダーに祝日を入れたいと思っています そこで これを if文もしくはselectcase どっちを使ったら楽か教えてもらいたいです Sub MakeCalendar(hi As Date) Dim i As Integer 'カレンダーにセットする日付 Dim g As Integer '日付をセットする行番号 Dim r As Integer '日付をセットする列番号 Dim lastDay As Integer '作成するカレンダーの月末 g = 2 'その月の開始曜日を算出 r = Weekday(DateSerial(Year(hi), Month(hi), 1), vbSunday) '指定された日付の翌月1日をもとて、日付の前の日を計算する lastDay = Day(DateSerial(Year(hi), Month(hi) + 1, 1) - 1) For i = 1 To lastDay 'iに日付の設定 Cells(g, r).Value = i If r = 7 Then r = 1 '戻して g = g + 1 '1行下に書く Else r = r + 1 '1列→に移動する End If Next End Sub Sub test() Range("A2:G7").Value = "" 'A2~G2にカレンダー表示 MakeCalendar Range("I2").Value 'I2に日付を入力する End Sub Sub test() Range("A2:G7").Value = "" 'A2~G2にカレンダー表示 MakeCalendar Range("I2").Value 'I2に日付を入力する End Sub このようなマクロを組んでいまして、祝日(ゴールデンウィークなど)を赤で塗りつぶすような物を考えています。 VBAは初心者でまだあまりわかっていないので、ご教授ください

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 VBAではなく、関数を使った方法になりますが、以下の様な方法は如何でしょうか?  今仮に、カレンダーを表示させるシートのシート名がSheet1であるものとします。  まず、以下の参考URLのページの回答No.4に記されている方法に従って、休日シートに祝日と振替休日の一覧表を作成して下さい。 【参考URL】  質問No.8336981 エクセルの関数とオフィス2007-OKWave   http://okwave.jp/qa/q8336981.html  次に、Sheet1のB4セルに次の関数を入力して下さい。 =IF(ISNUMBER(1/(YEAR((TEXT($B$2,"yyyy年m月")&"1日")+0)>1904)),IF(ISNUMBER((TEXT($B$2,"yyyy年m月")&COLUMNS($B:B)-WEEKDAY((TEXT($B$2,"yyyy年m月")&"1日")+0)+1+(ROWS($4:4)-1)*7&"日")+0),(TEXT($B$2,"yyyy年m月")&COLUMNS($B:B)-WEEKDAY((TEXT($B$2,"yyyy年m月")&"1日")+0)+1+(ROWS($4:4)-1)*7&"日")+0,""),"")  次に、Sheet1のB4セルの書式設定の表示形式を[ユーザー定義]の d に設定して下さい。  次に、以下の操作を行って、B4セルに条件付き書式を設定して下さい。 Sheet1のB4セルを選択   ↓ [ホーム]タブをクリック   ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの[数式を使用して、書式設定するセルを決定]をクリック   ↓ 「次の数式を満たす場合に値を書式設定」と記されている欄に =AND(ISNUMBER(B4),COUNTIF(INDIRECT("休日!B:B"),B4)) と入力  尚、ExcelのバージョンがExcel2007以降(Excel2007も含む)の場合には、 =AND(ISNUMBER(B4),COUNTIF(休日!$B:$B,B4)) でも可   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック   ↓ 現れた「背景色」欄の色のサンプルの中にある赤色の四角形をクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの中にある[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの中にある[OK]ボタンをクリック  次に、Sheet1のB4セルをコピーして、Sheet1のB4~H9の範囲に貼り付けて下さい。  次に、Sheet1のB4~B9のセルの書式設定[塗りつぶし]を赤に、同じくH4~H9のセルの書式設定[塗りつぶし]を青に設定して下さい。  以上で準備は完了で、後はSheet1のB2セルに 2013年11月 或いは 平成25年11月 等の様に年と月を併せて入力しますと、カレンダーが自動的に表示されます。

関連するQ&A