Excel在键入期间将字段乘以另一列

时间:2014-02-23 05:49:10

标签: excel excel-vba vba

我有一个B列,其中包含许多行记录,默认情况下为空。现在我希望如果有人在记录中输入任何整数,可以在单元格B1上说,它应该计算为

integer value of cell * (-20)

-20修饰符存储在let Z1中。键入B1,B12 ... Bn的任何值都应按照与上述相同的方式计算。我怎么能这样做?

修改

预期结果

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以使用Change event。将其粘贴到您要在其上使用的工作表的Sheet module中:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B:B")) Is Nothing Then
    Target = Target.Value * Range("Z1")
End If

End Sub

Intersect方法测试以确保更改的单元格位于列B中。 Target是值已更改的单元格。

答案 1 :(得分:3)

是的,请使用Change事件,但您需要考虑以下几点:

  1. 如果用户粘贴了多个值,该怎么办?
  2. 如果用户输入公式怎么办?
  3. 如果用户删除了某些数据怎么办?

  4. 此版本考虑了这些因素

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Dim cl As Range
    
        Application.EnableEvents = False
        Set rng = Intersect(Me.Columns(2), Target)
        If Not rng Is Nothing Then
            For Each cl In rng.Cells
                If Not IsEmpty(cl) Then
                    If Not cl.HasFormula Then
                        cl.Value = cl.Value * Me.Range("Z1")
                    End If
                End If
            Next
        End If
        Application.EnableEvents = True
    End Sub