エクセルで行事入力表を毎月作成しています。
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日...
-
「於」 読み方
-
交通安全協力会 協力金1500円...
-
町内会の組の班長の順番が回っ...
-
高校生です 学校行事は全部休ん...
-
5月22日今日からセブンイレブン...
-
後援会費って払わなくてもOK?
-
返信しなかった往復ハガキは書...
-
女1人で仕事の飲み会に行くべき?
-
労働組合に入るべき?
-
隣人から苦情の手紙が届きまし...
-
今日1月13日木曜日。 翌金曜日...
-
内諾をいただいたことに対する...
-
子供の学校行事で、会社を休め...
-
誕生日おめでとうって言われた...
-
access 複数フィールドを1フィ...
-
子供会の運営委員の経験のある方
-
癌で退職する上司に送る言葉が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一般的な「1ヶ月前」とは
-
「6月2日をもって」は6月゜2日...
-
3月の終わりまでは高校生?
-
教育委員会告示
-
町内会の組の班長の順番が回っ...
-
卒業式で校長先生に記念品贈呈...
-
『3月以降』の場合は3月は含...
-
学位授与式を卒業式って言わな...
-
「於」 読み方
-
後援会費って払わなくてもOK?
-
5月22日今日からセブンイレブン...
-
返信しなかった往復ハガキは書...
-
獅子舞の熨斗袋表書きは、何と...
-
子供会の運営委員の経験のある方
-
卒業式を終えた、高校生の身分...
-
なるべく書けるところは漢字変...
-
英語で「卒園」って?!
-
癌で退職する上司に送る言葉が...
-
店長が異動されます。 お店の皆...
-
卒業式当日は大荷物…(T0T)
おすすめ情報