乘以范围的指定值

0 excel vba

我试图简单地将两个范围相乘,并且它是由 activeX 按钮激活的,但它一直给我#Name?来自乘法错误的错误 obv 但我不知道如何正确编辑它。谢谢

Private Sub CommandButton1_Click()
Dim rngData     As Range
    Dim rngNum     As Range

    Set rngData = ThisWorkbook.Worksheets("Custom Systems").Range("G16")
      Set rngNum = ThisWorkbook.Worksheets("Custom Systems").Range("c8")
    rngData = Evaluate(rngData.Address & "* rngNum")
End Sub
Run Code Online (Sandbox Code Playgroud)

Yow*_*E3K 5

您的问题最简单的解决方案是:

With ThisWorkbook.Worksheets("Custom Systems")
    .Range("G16").Value = .Range("G16").Value * .Range("c8").Value
End With
Run Code Online (Sandbox Code Playgroud)

或者

With ThisWorkbook.Worksheets("Custom Systems")
    Set RngData = .Range("G16")
    Set RngNum = .Range("c8")
    RngData.Value = RngData.Value * RngNum.Value
End With
Run Code Online (Sandbox Code Playgroud)

(.Value是默认属性,因此如果您想在键入时保存一些字符,可以省略它。)


如果该RngData范围不是单个单元格,则上述方法将不起作用。在这种情况下,我会迭代每个单元格,例如

Dim oneCell As Range
With ThisWorkbook.Worksheets("Sheet1")
    Set rngdata = .Range("G11:G27")
    Set rngnum = .Range("C6")

    For Each oneCell In rngdata
        oneCell.Value = oneCell.Value * rngnum.Value
    Next

End With
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用内置的“粘贴特殊值乘法”方法,例如

With ThisWorkbook.Worksheets("Sheet1")
    Set rngdata = .Range("G11:G27")
    Set rngnum = .Range("C6")

    rngnum.Copy
    rngdata.PasteSpecial Paste:=xlPasteValues, _
                         Operation:=xlMultiply

End With
Run Code Online (Sandbox Code Playgroud)

或者您可以在这种情况下使用该Evaluate函数:

With ThisWorkbook.Worksheets("Sheet1")
    Set rngdata = .Range("G11:G27")
    Set rngnum = .Range("C6")

    'Note: The ".Value" is required in the next line or it will not work
    rngdata.Value = Evaluate(rngdata.Address & "*" & rngNum.Address)
End With
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我不喜欢这种Evaluate方法 - 我怀疑它比其他方法效率更低。