乘以一个范围的分配值

我试图简单地乘以另一个两个范围,它是由一个ActiveXbutton激活,但它不断给我#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 

对你的问题最简单的解决scheme是:

 With ThisWorkbook.Worksheets("Custom Systems") .Range("G16").Value = .Range("G16").Value * .Range("c8").Value End With 

要么

 With ThisWorkbook.Worksheets("Custom Systems") Set RngData = .Range("G16") Set RngNum = .Range("c8") RngData.Value = RngData.Value * RngNum.Value End With 

.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 

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

 With ThisWorkbook.Worksheets("Sheet1") Set rngdata = .Range("G11:G27") Set rngnum = .Range("C6") rngnum.Copy rngdata.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlMultiply End With 

或者你可以在这种情况下使用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 

就个人而言,我不喜欢Evaluate方法 – 我怀疑它会比其他方法更低效。

 With ThisWorkbook.Worksheets("Custom Systems") .[G11:G27] = .[G11:G27*C6] End With