我正在尝试使用VBA向单元格添加动态公式。我已经看到了几个帖子,但我无法弄清楚我做错了什么。我收到运行时错误' 1004' for" Method' Range'对象' _Worksheet'失败&#34 ;.我做错了什么?
Sub AddFormulas()
Dim LastNumberRow As Integer
Set countBase = Sheet7.Range("CU2")
colCount = Sheet7.Range(countBase, countBase.End(xlToRight)).Columns.Count
Dim startCount As Integer
startCount = 98
For i = 1 To colCount
If IsNumeric(Cells(2, startCount + i)) Then
Sheet7.Range(3, i).Formula = "=Sheet6!" & Cells(3, startCount + i).Address & "*" & "Sheet7!" & Cells(3, colCount + startCount).Address
Else
'Do some stuff
End If
Next i
End Sub
我已经从下面的评论中添加了建议的更改,但我没有得到文件浏览器弹出窗口。我通过以下更改修改了代码:
If IsNumeric(Sheet7.Cells(2, startCount + i)) Then
Set bSum = Sheet7.Cells(3, colCount + startCount)
Set bSpr = Sheet6.Cells(3, startCount + i)
Sheet7.Cells(3, i).Formula = "=Sheet6!" & bSpr.Address() & "*" & "Sheet7!" & bSpr.Address()
答案 0 :(得分:1)
尝试替换Sheet7.Range(3, i).Formula = ...
用:Sheet7.Cells(3, i).Formula = ...
答案 1 :(得分:0)
我使用此解决方案让它工作:
Sub Formulas()
'Adds the formulas to the worksheet
Dim rLastCell As Range
Set countBase = Sheet6.Range("CU2")
'Starts at cell CU2 and counts the number of columns to the right that are being used
colCount = Sheet6.Range(countBase, countBase.End(xlToRight)).Columns.Count
Dim startCount As Integer
startCount = 98 'This is column CT
For i = 1 To colCount
'Checks to see if the value in row 2 starting at CU is a number, if it is it adds the index-match formula
If IsNumeric(Sheet7.Cells(2, startCount + i)) Then
bSpr = Sheet6.Cells(3, startCount + i).Address(True, False)
Sheet6.Cells(3, startCount + i).Formula = "=INDEX(ORIG_MAT_DATA_ARRAY,MATCH($W3,MAT_RLOE_COLUMN),MATCH(" _
& bSpr & ",MAT_CY_HEAD))" & "/" & "INDEX(ORIG_MAT_DATA_ARRAY,MATCH($W3,MAT_RLOE_COLUMN),MATCH(""Total"",ORIG_MAT_CY_HEAD,0))"
End If
'Checks to see if the value in row 2 starting at CU is the word "Total", if it is it adds the sum formula
If Sheet6.Cells(2, startCount + i) = "Total" Then
startCol = Cells(3, startCount + 1).Address(False, False)
endCol = Cells(3, startCount + (colCount - 1)).Address(False, False)
Sheet6.Cells(3, colCount + startCount) = "=SUM(" & startCol & ":" & endCol & ")"
End If
Next i
End Sub