我试图简单地将两个范围相乘,并且它是由 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)
您的问题最简单的解决方案是:
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方法 - 我怀疑它比其他方法效率更低。
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |