首页 > 解决方案 > 将 VBA 更改为自动运行或在移动选项卡时运行

问题描述

我有下面的 VBA,它只在单元格更新时运行。有一个公式可以更新单元格,但 VBA 并没有将此作为更改。我如何让 VBA 自动运行,这样我就不必在每个单元格内进行制表符来使 VBA 运行。最好是全自动的,但如果它很容易可以改变标签等。

任何帮助,将不胜感激。

Private Sub Worksheet_Change(ByVal Target As Range)    
     If Target.Column = 9 Or Target.Column = 13 Then 'Column I or column M
         If UCase(Target) = "YES" Then Target.Offset(0, -1).ClearContents
    End If
End Sub

标签: excelvbaexcel-formula

解决方案


@DMO

在这里,刚刚经过测试,效果很好。而且它有点快

Public Sub UpdatedEIghtAndTwelve()
    Dim arr As Variant
    arr = ThisWorkbook.ActiveSheet.UsedRange.Formula
    Dim i As Long, j As Long, z As Long

    j = UBound(arr, 1)
    z = UBound(arr, 2)

    For i = LBound(arr, 1) To UBound(arr, 1)
        If arr(i, 9) = "YES" Then
            arr(i, 8) = vbNullString
        End If
        If arr(i, 13) = "YES" Then
            arr(i, 12) = vbNullString
        End If
    Next i

    With ThisWorkbook.ActiveSheet
        .Range(.Cells(1, 1), .Cells(j, z)).Value2 = arr
    End With

End Sub

我忘了补充一点,你需要把它放在你想要运行的工作表后面的工作表代码中

 Private Sub Worksheet_Activate()
     Call UpdatedEIghtAndTwelve
 End Sub

推荐阅读