Как применить формулу макроса / vba для указания c ячеек - PullRequest
0 голосов
/ 19 июня 2020

Я хотел бы применить формулу vba к обозначенным ячейкам. VBA, над которым я работаю, будет: Если я что-то напечатаю на C2, штамп даты будет автоматически помещен в D2.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
With Target.Offset(0, 1)
.Value = Now
.NumberFormat = "MM/DD/YYYY"
End With
End Sub

Однако, если я что-то напечатал на C1, также появится отметка даты. Как я могу ограничить диапазон VBA? Например, мне просто нужна отметка даты от D2 до D5.

Спасибо !!

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Вы можете применить функцию Intersect, чтобы проверить, попадает ли цель в желаемый диапазон, например

 Dim dr As Range
 Set dr = Range("C2:C5")

 If Not Intersect(target, dr) Is Nothing Then
     ... it is OK, go ahead

 EndIf
0 голосов
/ 19 июня 2020

Первый ответ правильный, но вот его полная версия

Вставьте это в проект таблицы, а не как модуль VBA

Private Sub Worksheet_Change(ByVal Target As Range)


Dim WorkRng As Range
Dim rng As Range
Dim xOffsetColumn As Integer


Set WorkRng = Intersect(Application.ActiveSheet.Range("C2:C5"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then

    Application.EnableEvents = False

    For Each rng In WorkRng
        If Not VBA.IsEmpty(rng.Value) Then
            rng.Offset(0, xOffsetColumn).Value = Now
            rng.Offset(0, xOffsetColumn).NumberFormat = "mm-dd-yyyy"
        Else
            rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True

End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...