こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルの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は初心者でまだあまりわかっていないので、ご教授ください

投稿日時 - 2014-02-04 00:19:30

QNo.8460389

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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月

等の様に年と月を併せて入力しますと、カレンダーが自動的に表示されます。

投稿日時 - 2014-02-04 03:18:13

あなたにオススメの質問