2017-06-22 88 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