Cell に参照する名前を付けると、Worksheet_Change 関数に渡された Target パラメーターを使用して、いくつかの優れた処理を実行できます。
'Add this function to the sheet that has the cell being
'+changed by the user (Sheet 2)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strCellName As String
strCellName = "ChangeMe"
'If the cell we changed was the ChangeMeCell
If Target.Address = Sheet2.Range(strCellName).Address Then
'Store value
Dim intLastRow, intValue As Integer
intValue = Range(strCellName).Value
'Find the cell in Sheet 1 Column A that matches this month
intLastRow = Sheet1.Range("A:A").End(xlDown).Row
For Each cl In Sheet1.Range("A1:A" & intLastRow).Cells
'Ensure cell value is date
If IsDate(cl.Value) Then
'If date is today's date
'Note that Math.Round(<date>, 0 ) essentially removes the time
'+from any date value so #01/02/03 04:05:06# becomes #01/02/03#
If Math.Round(cl.Value,0) = Math.Round(Now,0) Then
'Update column B's value
Sheet1.Range("B" & cl.Row).Value = intValue
End If
End If
Next
End If
End Sub
これは、シート 1 に「請求書の値」を含むシート レイアウトがあり、シート 2 でセルが変更されていることを前提としています。そのセルに名前を付ける必要があります。
関数バーの左側にあるセル名ボックスを使用して、「ChangeMe」または変更したいセルを呼び出し、関数の最初の行でそのセル名を更新すると、この関数が残りのすべてを実行します。
日付は、システムの地域に合わせて正しくフォーマットする必要があることに注意してください。正しい月が表示されていることを確認するには、LongDate にフォーマットして、2013 年 3 月 8 日ではなく 2013 年 3 月 8 日として表示されるようにします。英国のプログラマーとして言えば、日付は私の人生の悩みの種です!
編集:以前の月ごとの比較ではなく、完全な日付から時刻を引いた日付で日付を比較するようにコードを更新しました。いずれかの日付値に月を減算または加算する必要がある場合は、月DateAdd("m", <date>, <value>)
を加算または減算するだけです。 .
編集: DatePart 関数ページは、DatePart() について詳しく知りたい場合に役立つリソースです。