
エクセルで行事入力表を毎月作成しています。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
高校生です 学校行事は全部休ん...
-
町内会の組の班長の順番が回っ...
-
一般的な「1ヶ月前」とは
-
職場の同僚(異性)からの誕生日...
-
「6月2日をもって」は6月゜2日...
-
「於」 読み方
-
町内会の清掃に出れない時の対...
-
エクセルのシートリンクで,色...
-
誕生日を忘れられた友達との今...
-
噂話がどこまでも広がりを見せ...
-
女1人で仕事の飲み会に行くべき?
-
獅子舞の熨斗袋表書きは、何と...
-
友達に
-
今日1月13日木曜日。 翌金曜日...
-
内諾をいただいたことに対する...
-
大学の入学式には親が付いてい...
-
子供の学校行事で、会社を休め...
-
二十歳すぎたら保護者は存在し...
-
誕生日プレゼントをお返ししな...
-
けんか別れした友だちに手紙を
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「6月2日をもって」は6月゜2日...
-
3月の終わりまでは高校生?
-
町内会の組の班長の順番が回っ...
-
一般的な「1ヶ月前」とは
-
卒業式で校長先生に記念品贈呈...
-
教育委員会告示
-
「於」 読み方
-
子供会の運営委員の経験のある方
-
高校生です 学校行事は全部休ん...
-
卒業式を終えた、高校生の身分...
-
エクセルのシートリンクで,色...
-
子供の学校行事で、会社を休め...
-
卒業式当日は大荷物…(T0T)
-
大学の卒業式が不安です。
-
誕生日を忘れられた友達との今...
-
なるべく書けるところは漢字変...
-
中学校卒業から高校入学までの間
-
2か月前に別れた元彼に対する卒...
-
店長が異動されます。 お店の皆...
-
学位授与式を卒業式って言わな...
おすすめ情報