在VBA中使用stringvariables公式抛出对象/应用程序错误

当我尝试将活动工作表中的单元格设置为公式时,出现“应用程序定义或对象定义的错误”。 我想它是由于我试图使用公式中的Sheets.Name函数,请参阅下面的代码:

Public Sub getChannels() Dim lastRow As Long Dim i As Integer, counter As Integer Dim rng As Range, rngB As Range, rngC As Range Dim sht As Worksheet Dim test As String Set sht = Sheets("Summary Sheet - 30-07-2015") sht.Activate lastRow = sht.Cells(sht.Rows.Count, "B").End(xlUp).Row For counter = 1 To lastRow Step 3 If ActiveSheet.Cells(counter, 12) = "LTE 2C" Then ActiveSheet.Cells(counter, 16) = _ "=INDEX('LTE 2C'!C[55],MATCH(""'"" & sht.name &""'""!RC[-14],'LTE 2C'!C[-11],0))" ActiveSheet.Cells(counter, 17) = _ "=INDEX('LTE 2C'!C[53],MATCH(""'"" & sht.name &""'""!RC[-15],'LTE 2C'!C[-12],0))" ActiveSheet.Cells(counter, 18) = _ "=INDEX('LTE 2C'!C[55],MATCH(""'"" & sht.name &""'""!RC[-16],'LTE 2C'!C[-13],0))" Range("P" & counter & ":R" & counter).Select Selection.Copy Range("P" & counter + 1 & ":P" & counter + 2).Select ActiveSheet.Paste End If Next End Sub 

我错过了什么明显的?

像这样改变你的公式:

 ActiveSheet.Cells(counter, 16) = _ "=INDEX('LTE 2C'!C[55],MATCH(" & "'" & sht.name & "'" & "!RC[-14],'LTE 2C'!C[-11],0))" ActiveSheet.Cells(counter, 17) = _ "=INDEX('LTE 2C'!C[53],MATCH(" & "'" & sht.name & "'" & "!RC[-15],'LTE 2C'!C[-12],0))" ActiveSheet.Cells(counter, 18) = _ "=INDEX('LTE 2C'!C[55],MATCH(" & "'" & sht.name & "'" & "!RC[-16],'LTE 2C'!C[-13],0))" 

Nelly是正确的,但另一种方法是简单地删除每个撇号不必要的额外string,并将其replace为:

 ActiveSheet.Cells(counter, 16) = _ "=INDEX('LTE 2C'!C[55],MATCH('" & sht.name & "'!RC[-14],'LTE 2C'!C[-11],0))" 

撇号只在前后附加在string上。 它确实没有什么区别,但它删除了额外的(&)。