Excelmacros – 设置单元格公式时出错
我需要使用macros在我的工作表中添加一个函数。 我需要将一个variables传递给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对象转换为范围的string表示forms,例如将公式设置为=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&“)” – 但是当这实际评估?
theFormula = SUM(“&MyRange&”)
工作?