如何在没有按钮的情况下删除特定列

问题描述 投票:0回答:1

所以我试图制作一个删除单元格的代码,只要它们在从“O”列删除单元格后(水平地)属于同一列。列N是链接到列FF的所有勾选框。如果在删除发生时将它们设置为true,则应该变为false。列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。我也不能选择多个单元格,它一次只删除一个单元格。

excel vba
1个回答
-1
投票

这是一切开始正常工作的最终结果。

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
© www.soinside.com 2019 - 2024. All rights reserved.