Как правильно отформатировать этот код VBA? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь создать документ Excel, который будет автоматически заполнять дату в столбце A всякий раз, когда что-то вводится в соседнюю строку.Я нашел аналогичный ответ онлайн:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 2017/10/12

    Dim xRg As Range, xCell As Range
    On Error Resume Next
    If (Target.Count = 1) Then
        If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
            Target.Offset(0, -1) = Date

        Application.EnableEvents = False
        Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))

        If (Not xRg Is Nothing) Then
            For Each xCell In xRg
                xCell.Offset(0, -1) = Date
            Next
        End If

        Application.EnableEvents = True
    End If
End Sub

Это делает соседний столбец автозаполнением даты.Другой ответ был дан в разделе комментариев, и это именно та функция, которую я ищу.Dut из-за форматирования раздела комментария, его отступы отсутствуют:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 20190924

Dim xRg As Range, xCell As Range
Dim xInt As Integer

On Error Resume Next
If (Target.Count = 1) Then
     If (Not Application.Intersect(Target, Me.Range("B:N")) Is Nothing) Then
          Application.EnableEvents = False
          xInt = Target.Row
          Me.Range("A" & xInt).Value = Date
          Application.EnableEvents = True
     End If
End If

End Sub

Как это должно быть написано правильно?

1 Ответ

0 голосов
/ 26 сентября 2019

Общее правило

Количество отступов показывает, насколько глубоко вложены соответствующие строки кода.Дополнительная вкладка / 4 пробела должны быть применены для каждого дополнительного слоя вложения.

Полезные инструменты форматирования

Некоторые веб-сайты будут автоматически выполнять форматирование для вас, например:

http://www.vbindent.com/?indent

Ответ:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 20190924
    Dim xRg As Range, xCell As Range
    Dim xInt As Integer
    On Error Resume Next
    If (Target.Count = 1) Then
        If (Not Application.Intersect(Target, Me.Range("B:N")) Is Nothing) Then
            Application.EnableEvents = False
            xInt = Target.Row
            Me.Range("A" & xInt).Value = Date
            Application.EnableEvents = True
        End If
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...