在公式

时间:2017-06-22 02:31:09

标签: excel excel-vba vba

我试图在一个简单的加法公式中使用变量。首先,我在行3中搜索列标题调用“Jan Expense Hours”MsgBox ColL返回字母“I”,MsgBox ColL2返回字母“J”,两者都是正确的。 lRow返回第55行,这也是正确的。虽然当我尝试将这些变量添加到Worksheets("Calcs").Range("F4:F" & lRow).Formula = "=SUM('Resource Details'! & [ColL] & 4: & [ColL2] & 4)"时,我在这行代码上得到了应用程序定义或对象定义的错误。有没有人知道我做错了什么?顺便说一句,我正在搜索列标题,因为列确实在各种副本上移动。

完整程序:

Sub JanTotHrsFind()
Dim lRow As Long
Dim lCol As Long
Dim strSearch As String
Dim aCell As Range
Dim ColL As String
Dim ColL2 As String
Dim ColNo As Long

Sheets("Resource Details").Activate

    'find the column
    strSearch = "*Jan Expense Hours*"

    Set aCell = Sheets("Resource Details").Rows(3).Find(What:=strSearch, LookIn:=xlValues, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=True, SearchFormat:=False)


'convert column number to letter
ColNo = aCell.Column
    ColL = Split(Cells(, ColNo).Address, "$")(1)

    ColL2 = Split(Cells(, (ColNo + 1)).Address, "$")(1)     'adds one more column to right
MsgBox ColL
MsgBox ColL2 

    lRow = Cells.Find(What:="SUBTOTAL*", _
                    After:=Range(ColL & "4"), _
                    LookAt:=xlPart, _
                    LookIn:=xlFormulas, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlPrevious, _
                    MatchCase:=False).Row - 1         'minus 1 row to move above

MsgBox "Last Row: " & lRow

'formula for Jan Expense Hours + Jan Capital Hours
'Worksheets("Calcs").Range("F4:F" & lRow).Formula = "=SUM('Resource Details'!I4:J4)"
'Worksheets("Calcs").Range("F4:F" & lRow).Formula = "=SUM('Resource Details'![" & ColL & "]4:[" & ColL2 & "]4)"
Worksheets("Calcs").Range("F4:F" & lRow).Formula = "=SUM('Resource Details'! & [ColL] & 4: & [ColL2] & 4)"

End Sub

1 个答案:

答案 0 :(得分:1)

  

您不应该在括号内写下变量。

所以:

Worksheets("Calcs").Range("F4:F" & lRow).Formula = "=SUM('Resource Details'!" & [ColL] & "4:" & [ColL2] & "4)"

如上所述,您可以尝试使用您的代码,看看它是如何进行的。