Excelmacros – 设置单元格公式时出错

我需要使用macros在我的工作表中添加一个函数。 我需要将一个variables传递给Excel函数,因为myWorkbooksheetName (它将引用它)是可变的。

 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&”)

工作?