
エクセルで行事入力表を毎月作成しています。
D4からAG4までに1日から31日の日付を入れ、土日は行事がないので、
教えていただいた下のマクロの実行で列幅を縮小しています。
Sub Macro1()
Dim idx As Integer
For idx = 4 To 34
If Weekday(Cells(4, idx).Value) = vbSunday Or _
Weekday(Cells(4, idx).Value) = vbSaturday Then
Columns(idx).ColumnWidth = 1.5
End If
Next
End Sub
これに、お盆や正月の行事のない日(会社の休日)を加えたいのですが、出来るでしょうか。
行事のない日付は、AK4からAK15に予め入力しています。
どなたか、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Range("AK4:AK15").Find(Cells(4, idx).Value, LookAt:=xlWhole)
でAK4:AK15の範囲にデータがあるかないか判断できるので、これを条件に付け加えてあげればOKです。
Sub Macro1()
Dim idx As Integer
For idx = 4 To 34
If Weekday(Cells(4, idx).Value) = vbSunday Or _
Weekday(Cells(4, idx).Value) = vbSaturday Or _
Not Range("AK4:AK15").Find(Cells(4, idx).Value, LookAt:=xlWhole) Is Nothing Then
Columns(idx).ColumnWidth = 1.5
End If
Next
End Sub
お礼が遅れました。申し訳ありません。
早速のご教示ありがとうございました。
活用させていただきます。
また、よろしくお願いいたします。
No.3
- 回答日時:
この質問は丸投げです。
結局無理をして、前質問で回答をコピペだけしているのでこうなる。今回は曜日関数を使う、では役立たないのはわかるでしょう。
別途、その日が、>AK4からAK15に予め入力しています、の月日に当たるか判別すれば良い。質問に書いてないが>AK4からAK15に予め入力している、日は月+日だろうね。
(1)このシートのC1にでも月数字があるとして(今回2009年1月としてC1に1を入れておく)
(2)AK列に4御意行目以下に
祝日+会社休業日
1/1
1/2
1/3
1/15
・・・
があるとして
標準モジュールに、関数を下のように作る
Function Shuku(a)
For i = 4 To 15
If Cells(i, "AK") = a Then
Shuku = True
Exit Function
End If
Next i
Shuku = False
End Function
ーーー
本体は
Sub Macro1()
Dim idx As Integer
For idx = 4 To 34
tuki = Cells(1, "C")
hi = Day(Cells(4, idx))
a = tuki & "/" & hi
MsgBox a
MsgBox Shuku(a)
If Weekday(Cells(4, idx).Value) = vbSunday Or _
Weekday(Cells(4, idx).Value) = vbSaturday Or _
Shuku(a) Then
Cells(5, idx) = 1
'Columns(idx).ColumnWidth = 1.5
End If
Next
End Sub
を実行して、1/1,1/2,1/3,1/15が土日のほかに(その日の第5行目が)1になることを確かめて、納得してください。
その後
'Columns(idx).ColumnWidth = 1.5 を生かし(’を除く)
Cells(5, idx) = 1 をコメント化してください。
ーー-
月の指定をどうして居るか、
AK列をどうしているか(年まで入れて指定しているのか
はっきり書けてない。祝日などは毎年変わるが、毎月変えるより、1年一回の見直しの方が良かろう。
解決策の構想力も含め、質問者には難しい程度のVBAの課題ではないかな。
お礼が、遅れて申し訳ありません。
また、ご指示、ご回答ありがとうございました。
参考とさせていただきます。
また、よろしくお願いいたします。
No.1
- 回答日時:
AK4からAK15をiでループさせてそれぞれの値がD4からAG4までに
存在しないかjでループさせ、総あたりチェックをかけてはどう
でしょうか?
それようの関数を作って
If Weekday(Cells(4, idx).Value) = vbSunday Or _
Weekday(Cells(4, idx).Value) = vbSaturday Or _
総当たりチェック関数 Then
ってやればOKだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「6月2日をもって」は6月゜2日...
-
9月以降とはいつからでしょうか...
-
一般的な「1ヶ月前」とは
-
「於」 読み方
-
高校生です 学校行事は全部休ん...
-
内諾をいただいたことに対する...
-
5月22日今日からセブンイレブン...
-
最近『ドン・キホーテ』でメイ...
-
Happy 20th Birth Day! 使い方...
-
女1人で仕事の飲み会に行くべき?
-
出不精の反対はどういうのでし...
-
子供の学校行事で、会社を休め...
-
子供会の運営委員の経験のある方
-
仲が悪くなった友達に手紙を書...
-
エクセルのシートリンクで,色...
-
誕生日を忘れられた友達との今...
-
今日1月13日木曜日。 翌金曜日...
-
会社の後輩に誕プレあげるのは...
-
勤務先での拝礼
-
取引先から住所を聞かれてます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
高校生です 学校行事は全部休ん...
-
「6月2日をもって」は6月゜2日...
-
一般的な「1ヶ月前」とは
-
「於」 読み方
-
町内会の清掃に出れない時の対...
-
内諾をいただいたことに対する...
-
町内会の組の班長の順番が回っ...
-
子供の学校行事で、会社を休め...
-
誕生日を忘れられた友達との今...
-
今日1月13日木曜日。 翌金曜日...
-
興味のない女子に学校の行事の...
-
エクセルのシートリンクで,色...
-
友達から誕生日プレゼントが貰...
-
LINEで誕生日を公開してない人...
-
最近『ドン・キホーテ』でメイ...
-
5月22日今日からセブンイレブン...
-
獅子舞の熨斗袋表書きは、何と...
-
江戸時代船が川を遡るときはど...
-
創価学会員がやらない行事って?
-
満60歳ていつ?
おすすめ情報