Как настроить таргетинг на определенные столбцы после удаления без кнопок - PullRequest
0 голосов
/ 10 апреля 2019

Поэтому я пытаюсь создать код, который удаляет ячейки, если они принадлежат одному и тому же столбцу (по горизонтали) после удаления ячейки из столбца «О».Столбец N - все флажки, связанные со столбцом FF.если они установлены в true, когда удаление происходит, оно должно стать ложным.Столбец O - это место, где должно произойти удаление (цель состоит в том, чтобы просто нажать на ячейку и щелкнуть на кнопке «Удалить» или «Пробел» на клавиатуре, а не на кнопке.) Столбец P - это дата подписания, которую также следует удалить.

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("O:O"), 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 = "dd-mm-yyyy"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If

не удалось установить для полей значение false.также я не могу выбрать несколько ячеек, он удаляет только одну за раз.

1 Ответ

0 голосов
/ 10 апреля 2019

Это конечный результат, в котором все начало работать правильно.

Private Sub Worksheet_Change(ByVal Target As Range) '<----- Start of worksheet script
Dim WorkRng As Range '<----- selection
Dim Rng As Range '<----- selected cell(s)
Dim xOffsetColumn As Integer '<----- idk lol
Set WorkRng = Intersect(Application.ActiveSheet.Range("O:O"), Target) '<----- block selection for anything other than column O
xOffsetColumn = 1 '<----- Useless , but it means the cell one range forward will be changed.
If Not WorkRng Is Nothing Then '<----- if statement
    Application.EnableEvents = False '<----- idk what this is for but ok.
    For Each Rng In WorkRng '<----- Start of cell loop
        If Not VBA.IsEmpty(Rng.Value) Then '<----- Second start of if statement
            Rng.Offset(0, xOffsetColumn).Value = Now '<----- Date and time
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy" '<----- Date and time format
        Else '<----- if's else statement.
            Rng.Offset(0, xOffsetColumn).ClearContents '<----- Command for deletion.
            Rng.Offset(, 147).Value = False '<----- Tick Box sets to false.
        End If '<----- Second end of if statement
    Next Rng '<----- end of loop
    Application.EnableEvents = True '<----- I also don't know what this is for but ok.
End If '<----- First end of if statement.






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