
こちらで 質問して 平日の関数 を追加したおかげで、とても助かっています。
そこで、休日の関数を使いたいのですが、そんな関数はあるのでしょうか
N7に1が入ると A7が 8/12になる
N8に1が入ると A8が 8/12になる
にしたいのですが、
どんな関数を下記にに追加すればいいのでしょうか?
ちなみに アドインには 分析ツールと分析ツール VBA 両方共チェックがあります。
シートには、下記のコードが入っています。
ご存知のかた教えていただければ助かります。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim h As Range
On Error Resume Next
For Each h In Application.Intersect(Target, Range("N:N"))
If h > 0 Then
Select Case Cells(h.Row, "B")
Case "毎日"
Cells(h.Row, "A") = Cells(h.Row, "A") + 1
Case "平日"
Cells(h.Row, "A") = Application.Run("ATPVBAEN.XLA!WorkDay", Cells(h.Row, "A"), 1)
Case "毎週"
Cells(h.Row, "A") = Cells(h.Row, "A") + 7
Case "隔週"
Cells(h.Row, "A") = Cells(h.Row, "A") + 14
Case "毎月"
Cells(h.Row, "A") = DateAdd("M", 1, Cells(h.Row, "A"))
Case "隔月"
Cells(h.Row, "A") = DateAdd("M", 2, Cells(h.Row, "A"))
End Select
End If
Next
For Each h In Application.Intersect(Target, Range("B:B"))
If StrConv(h, vbNarrow) = "-" Then
Cells(h.Row, "A").ClearContents
End If
Next
End Sub

No.2ベストアンサー
- 回答日時:
休日の関数が特に用意されているわけではありません。
次のようにすることで平日の場合でも日曜日や土曜日さらには別に指定した祝日などを避けた日付が表示されるように、また、休日の場合では日曜日や銅曜日の日付が表示されるようにするためには次のようなマクロにすることが必要でしょう。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim h As Range
On Error Resume Next
i = 0
For Each h In Application.Intersect(Target, Range("N:N"))
If h > 0 Then
Select Case Cells(h.Row, "B")
Case "毎日"
Cells(h.Row, "A") = Cells(h.Row, "A") + 1
Case "平日"
myDate1 = Cells(h.Row, "A")
Do
i = i + 1
myDate = myDate1 + i
myWeekday = Weekday(Date:=myDate)
myHolyday = WorksheetFunction.CountIf(Worksheets("Sheet2").Range("A:A"), myDate)
Loop Until myWeekday <> 1 And myWeekday <> 7 And myHolyday = 0
'日曜日と土曜日以外さらにシート2のA列での休日を含まない日を選んでいます。
Cells(h.Row, "A") = myDate
Case "休日"
myDate1 = Cells(h.Row, "A")
Do
i = i + 1
myDate = myDate1 + i
myWeekday = Weekday(Date:=myDate)
Loop Until myWeekday = 1 Or myWeekday = 7 '日曜日又はの場合の日付を選んでいます。
Cells(h.Row, "A") = myDate
Case "毎週"
Cells(h.Row, "A") = Cells(h.Row, "A") + 7
Case "隔週"
Cells(h.Row, "A") = Cells(h.Row, "A") + 14
Case "毎月"
Cells(h.Row, "A") = DateAdd("M", 1, Cells(h.Row, "A"))
Case "隔月"
Cells(h.Row, "A") = DateAdd("M", 2, Cells(h.Row, "A"))
End Select
End If
Next
For Each h In Application.Intersect(Target, Range("B:B"))
If StrConv(h, vbNarrow) = "-" Then
Cells(h.Row, "A").ClearContents
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
【関数】【マクロ】売上X円以上...
-
エクセルシートの見出しの文字...
-
【マクロ 画像あり】Exact関数...
-
空白処理を空白に
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
if関数の複数条件について
-
エクセルでフィルターした値を...
-
空白のはずがSUBTOTAL関数でカ...
-
【マクロ】エラー【#DIV/0!】が...
-
【マクロ】数式を入力したい。...
-
【関数】3つのセルの中で最新...
-
Excelで4択問題を作成したい
-
エクセルの文字数列関数と競馬...
-
オートフィルターの絞込みをし...
-
表計算ソフトでの様式の呼称
-
【画像あり】【関数】指定した...
-
エクセルに写真が貼れない(フ...
-
【関数】=EXACT(a1,b1) a1とb1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の1列からもっとも古い日...
-
ドコモ スケジュールのアラー...
-
Oracleに日付や時刻のリテラル...
-
アウトルックの受信メールについて
-
自分のWebページの更新日付が毎...
-
Excel関数で指定した年月の月初...
-
SQLについて質問です。 日付値...
-
万年青年になるにはどうすれば...
-
VB.NETで DataRow()を利用して...
-
Accessのクエリで、replace関数...
-
テキストボックスのvalueとtext...
-
ExcelVBAを使って、値...
-
エクセルで、絶対値の平均を算...
-
PHP8でWarning:Undefined varia...
-
[エクセル]連続する指定範囲か...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
表にフィルターをかけ、絞った...
-
i=cells(Rows.Count, 1)とi=cel...
おすすめ情報