[英]Excel Macro - Error setting cell formula
我需要在工作表中使用宏添加一个功能。 我需要将变量传递给Excel函数,因为myWorkbook
和sheetName
将对其进行引用,它们是变量。
MyRange = Workbooks(myWorkbook).Sheets(sheetName).Range("H11:H32")
theFormula = "=SUM(" & MyRange & ")"
Range("B2").Select
ActiveCell.FormulaR1C1 = theFormula
我收到错误13: Type Mismatch
。
我不是一个狂热的VBA程序员,这让我很头疼。 我尝试将theFormula
定义为String,但没有希望。
您需要将Range对象转换为范围的字符串表示形式,例如,将公式设置为=SUM($H$11:$H$32)
;
Dim MyRange As Range
set MyRange = Workbooks(myWorkbook).Sheets(sheetName).Range("H11:H32")
theFormula = "=SUM(" & MyRange.Address(ReferenceStyle:=xlR1C1) & ")"
Range("B2").Select
ActiveCell.FormulaR1C1 = theFormula
或者,如果您不想要R1C1表示法,则可以;
ActiveCell.Formula = "=SUM(H11:H32)"
Sub MakeSum(sBookName As String, sSheetName As String)
Dim rMyRange As Range
Set rMyRange = Workbooks(sBookName).Sheets(sSheetName).Range("H11:H32")
If rMyRange.Parent.Parent.Name = ActiveWorkbook.Name Then
With ActiveSheet
'same sheet, so just use address
If rMyRange.Parent.Name = .Name Then
.Range("B2").Formula = "=SUM(" & rMyRange.Address & ")"
Else
'same workbook, different sheet, so prepend sheet name
'single quotes prevent error when there's a space in the sheet name
.Range("B2").Formula = "=SUM('" & rMyRange.Parent.Name & "'!" & rMyRange.Address & ")"
End If
End With
Else
'not the same workbook, use external address
ActiveSheet.Range("B2").Formula = "=SUM(" & rMyRange.Address(, , , True) & ")"
End If
End Sub
庆幸的是,这行不通-您说的是单元格公式应等于“ = SUM(”&MyRange&“)”-但是,何时实际求值呢?
是否执行Formula = SUM(“&MyRange&”)
工作?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.