コーディングは初めてですが、ご容赦ください。
ワークブックを開いてワークシートが変更されたときに開始される日付追加のイベント プロシージャを作成しようとしています。
「締め切り」日は、ユーザーが F3:F50 の範囲で手動で入力します。次に、別の日付を範囲 D3:D50 に自動的に挿入して、60 日早くしたいと考えています。
Private Sub Workbook_Open()
Sheet1.EventProc1 Sheet1.Range("D3:D50")
End Sub
^^私の理解: 指定された範囲のシート 1 のイベント プロシージャを開始します。
Private Sub Worksheet_Activate()
EventProc1 Me.Range("D3:D50")
End Sub
^^シートを開いたときと同じことを行います。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
EventProc1 Intersect(Target, Me.Range("F3:F50"))
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
^^ここから混乱が始まります。Intersect F3:F50 は、F3:F50 に新しいデータが入力されたことを検出したときにワークシートの変更を発生させたいと考えて作成しました (これは D3:D50 に影響するはずです)。
Sub EventProc1(rng As Range)
Dim cell As Range
Dim Closeout As Date
If rng Is Nothing Then Exit Sub
For Each cell In rng.Cells
Closeout = Range("F3:F50").Value
Select Case cell
Case Date: Cells.Value = DateAdd("d", -60, Closeout)
Case Else: Cells.ClearContents
End Select
Next
End Sub
^^メインコードでの私の試み。デバッガーが文字列 "Closeout = Range("F3:F50").Value" の型の不一致エラーを出し始め、初心者のスキルが困惑するまで、部分的に調整して動作させようとしていました。
助言がありますか?これを EventProc として設定した理由は、その上にさらに EventProc を配置するためです。ありがとうございます。