2017-06-22 87 views
1

我试图在变量中使用一个简单的加法公式。首先,我搜索第3行中的列标题,调用“1月费用小时”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

你不应该括号内写的变量。

所以:

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

能不能请你你的代码,就像我上面纠正,看看怎么回事。

+0

我知道我刚刚离开了一段时间。那就是诀窍。谢谢! – XLmatters

+0

这对我来说很重要:)很高兴帮助。你非常欢迎。 – Mertinc