Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 工作表\u更改-3列乘法求值_Vba - Fatal编程技术网

Vba 工作表\u更改-3列乘法求值

Vba 工作表\u更改-3列乘法求值,vba,Vba,我是vba新手,很沮丧 我有以下代码: Private Sub Worksheet_Change(ByVal Target As Range) Dim VolRange As Range Dim AffectVolRange As Range Set VolRange = ActiveSheet.Range("AH:AK") Set AffectVolRange = Intersect(Target, VolRange)

我是vba新手,很沮丧

我有以下代码:

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim VolRange As Range
    Dim AffectVolRange As Range
    Set VolRange = ActiveSheet.Range("AH:AK")
    Set AffectVolRange = Intersect(Target, VolRange)
      
    If Not AffectVolRange Is Nothing Then
        Dim vRow As Variant
        For Each vRow In AffectVolRange.Rows
            With VolRange
               Cells(vRow.Row, 37).Value = .Cells(vRow.Row, 34).Value * .Cells(vRow.Row, 35).Value * 
             .Cells(vRow.Row, 36).Value
            
             End With
        Next vRow
    End If
End Sub
第34、35、36列中的初始值为空

您都知道了。 考虑到您的列索引是相对于新范围的,所以是1、2、3、4。 此外,您还需要使用
Application.EnableEvents=False
禁用事件,以避免对代码事件更改的单元格上的函数进行递归调用

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim VolRange As Range
    Dim AffectVolRange As Range
    Set VolRange = ActiveSheet.Range("AH:AK")
    Set AffectVolRange = Intersect(Target, VolRange)
      
    If Not AffectVolRange Is Nothing Then
        Dim vRow As Variant
        Application.EnableEvents = False
        For Each vRow In AffectVolRange.Rows
            With VolRange
                .Cells(vRow.Row, 4).Value = .Cells(vRow.Row, 1).Value _
                * .Cells(vRow.Row, 2).Value _
                * .Cells(vRow.Row, 3).Value
            
             End With
        Next vRow
        Application.EnableEvents = True
    End If
End Sub
你都明白了。 考虑到您的列索引是相对于新范围的,所以是1、2、3、4。 此外,您还需要使用
Application.EnableEvents=False
禁用事件,以避免对代码事件更改的单元格上的函数进行递归调用

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim VolRange As Range
    Dim AffectVolRange As Range
    Set VolRange = ActiveSheet.Range("AH:AK")
    Set AffectVolRange = Intersect(Target, VolRange)
      
    If Not AffectVolRange Is Nothing Then
        Dim vRow As Variant
        Application.EnableEvents = False
        For Each vRow In AffectVolRange.Rows
            With VolRange
                .Cells(vRow.Row, 4).Value = .Cells(vRow.Row, 1).Value _
                * .Cells(vRow.Row, 2).Value _
                * .Cells(vRow.Row, 3).Value
            
             End With
        Next vRow
        Application.EnableEvents = True
    End If
End Sub

您需要解释您在做什么,您得到了什么结果,以及您期望得到什么结果。用户将第34、35、36和I列中的值填充为34*35*36的结果,第37列除外。在同一小节中,我有另一个计算方法,效果很好。你需要解释你在做什么,你得到了什么结果,你期望得到什么结果。用户将第34、35、36和I列中的值(第37列除外)填充为34*35*36的结果。在同一个潜艇中,我有另一个计算,效果很好