同一单元格中的输入值和背景公式

时间:2018-04-29 06:43:50

标签: excel vba excel-vba

我正在构建一个Excel工作表,我希望在随机数输入的同一单元格中有一个背景公式。

这是今天的价值观。

A1: 100<Br>
A2: 200<BR>
A3: 300

C1: 1,1

我希望A1A2A3与您输入值后输入的C1相乘。我希望将来更改C1中的值,column A中的所有值都会相应更新。

如果我输入100,我希望在上面的示例中将其更新为110,但如果我稍后将C1更改为1,2,则会自动变为120.

B:=A1*$C$1”之类的其他专栏中,这当然非常容易。但我真的只想在本文档中使用一个单元格。

没有VBA这是不可能的?如果是,我该怎么做VBA?提前谢谢。

1 个答案:

答案 0 :(得分:1)

在OP的澄清后编辑

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim values As Variant
    Dim rngToChange As Range
    Dim targetRow As Long

    Select Case True
        Case Not Intersect(Target, Range("A1:A3")) Is Nothing
            Set rngToChange = Intersect(Target, Range("A1:A3"))
            If Target.Count = 1 Then targetRow = Target.Row

        Case Target.Address = "$C$1"
            Set rngToChange = Range("A1:A3")

        Case Else
            Exit Sub
    End Select

    With Range("C1")
        If .Comment Is Nothing Then .AddComment(Join(Application.Transpose(Range("A1:A3").Value), " ")).Visible = False
        values = Split(.Comment.Text, " ")
        If targetRow <> 0 Then
            values(targetRow - 1) = Target.Value
            .ClearComments
            .AddComment(Join(values, " ")).Visible = False
        End If
    End With

    Dim cell As Range
    On Error GoTo goodexit
    Application.EnableEvents = False
    For Each cell In rngToChange
        cell.Value = values(cell.Row - 1) * Range("c1").Value
    Next

goodexit:
    Application.EnableEvents = True

End Sub