excel 当单元格被更改时,如何自动运行VBA代码?[副本]

f8rj6qna  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(295)

此问题已在此处有答案

automatically execute an Excel macro on a cell change(5个答案)
3天前关闭。
我从另一个网站上借用了(好吧,偷来的)下面的代码。

Sub HideRowCellTextValue()
    StartRow = 14
    LastRow = 25
    iCol = 5
    For i = StartRow To LastRow
        If Cells(i, iCol).Value <> "0" Then
            Cells(i, iCol).EntireRow.Hidden = False
        Else
            Cells(i, iCol).EntireRow.Hidden = True
        End If
    Next i
End Sub

这段代码做了我想让它做的一切,但我希望它能在单元格值更改时自动运行。
这些单元格都链接到同一工作簿中的另一个工作表。
当单元格的值为0时,我想隐藏单元格所在的整行。

kiz8lqtg

kiz8lqtg1#

您可以使用以下插入到工作表代码区域的代码,只要在工作表的任何位置进行任何更改,该代码就会运行。

Private Sub Worksheet_Change(ByVal Target As Range)
    StartRow = 14
    LastRow = 25
    iCol = 5
    For i = StartRow To LastRow
        Me.Cells(i, iCol).EntireRow.Hidden = (Me.Cells(i, iCol).Value = "0")
    Next i
End Sub

如果您希望代码仅在测试范围内进行更改时运行,则可以这样做:

Private Sub Worksheet_Change(ByVal Target As Range)
    
    StartRow = 14
    LastRow = 25
    iCol = 5
    
    With Me
        If Not Intersect(Target, .Range(.Cells(StartRow, iCol), .Cells(LastRow, iCol))) Is Nothing Then
    
            For i = StartRow To LastRow
                .Cells(i, iCol).EntireRow.Hidden = (.Cells(i, iCol).Value = "0")
            Next i
        
        End If
    End With
    
End Sub
92vpleto

92vpleto2#

把你的(?)代码添加到要修改的工作表的代码窗格中。将Sub重命名为

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

或者从代码窗格的下拉列表中选择它,然后只向其中添加代码体。创建对Sheet的引用,并在所有Cells属性之前添加对象变量名称,类似于以下内容

Set ws = ActiveWorkbook.Worksheets("TheSheetName")

和财产

ws.Cells(row,column)

或(根据评论)
无需参考,仅

Me.Cells(row,column)

相关问题