如何將巨集/VBA 公式套用至多個儲存格

如何將巨集/VBA 公式套用至多個儲存格

我已輸入以下內容:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$V$2" Then
    Range("U2") = Range("V2") * Range("O2")
End If

If Target.Address = "$U$2" Then
    Range("V2") = Range("U2") / Range("O2")
End If

End Sub

.....但是,這只適用於單元格 u2 和 v2。我需要這個公式一直運行到 U 列和 V 列。

任何幫助表示讚賞。

答案1

如果我理解正確的話,你可以使用這樣的東西。

Private Sub Worksheet_Change(ByVal Target As Range)

    'Don't apply to column headers
    If Target.Row = 1 Then Exit Sub

    'Make changes to anything in Column V (22)
    If Target.Column = 22 Then
        If IsNumeric(Range("V" & Target.Row)) And IsNumeric(Range("O" & Target.Row)) Then
            Range("U" & Target.Row) = Range("V" & Target.Row) * Range("O" & Target.Row)
        End If
    End If

    'Make changes to anything in Column U (21)
    If Target.Column = 21 Then
        If IsNumeric(Range("U" & Target.Row)) And IsNumeric(Range("O" & Target.Row)) And Range("O" & Target.Row) <> 0 Then
            Range("V" & Target.Row) = Range("U" & Target.Row) / Range("O" & Target.Row)
        End If
    End If

End Sub

每次更改單元格時都會觸發此事件。因此,它將檢查更改位於哪一列 - If Target.Column = 22 Then...如果列是 22(列 的數字表示形式V),它將繼續執行代碼的其餘部分,即使用 來更改 U、V 和 O Target.Row,即是,更改的單元格的行號。

編輯:添加了除以零檢查,並檢查以確保所有輸入的項目實際上是數字而不是字母/符號。

答案2

考慮:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Row = 1 Then Exit Sub
   If Intersect(Target, Range("U:V")) Is Nothing Then Exit Sub
   Application.EnableEvents = False
      If Not Intersect(Target, Range("V:V")) Is Nothing Then
         Target.Offset(0, -1).Value = Target.Value / Range("O" & Target.Row).Value
      Else
         Target.Offset(0, 1).Value = Target.Value / Range("O" & Target.Row).Value
      End If
   Application.EnableEvents = True
End Sub

筆記: 這不包括第一行。

相關內容