Ошибка времени выполнения 1004 - формула vba с переменными

Я пытаюсь собрать некоторый код, который вставляет функцию соответствия в столбец «B», которая ссылается на ту же строку в соседнем столбце «A», используя список в столбце «A» на другом листе в качестве поискового массива. Рабочий лист, на котором все это происходит, — это ws0, а лист, в котором находится поисковый массив, — это ws2.

Код срабатывает на последней строке (ПРОПУСТИТЕ К НИЖНЕЙ ЧАСТИ МОЕГО КОДА) в скобках «С»:

Cells(i, 2).Value = "=MATCH(A" & i & "," & ws2.Name & "!$A$9:$A$" & lRow1 & ", 0)""",

давая мне

Ошибка выполнения 1004. Ошибка, определяемая приложением или объектом.

Я не могу понять, что вызывает это. У меня есть ощущение, что мои кавычки могут быть неверными, или одна из моих переменных lRow1, fRow, ws2 может быть проблемой, но я возился с ними всеми, сколько мог, но безрезультатно. Любые мысли будут оценены! Обратите внимание, что закомментированная строка над той, которая выдает ошибку, демонстрирует, как должен выглядеть результат формулы.

Dim wb0 As Workbook 'this workbook (the log) '''''''''''''''''''''''
Dim wb1 As Workbook 'the opened T12 sheet
Dim rng0 As Range 'the range of cells in this workbook's 2nd sheet to be copied to
Dim rng1 As Range 'the range of cells from the opened workbook to be copied from
Dim rng2 As Range 'the range of the cells copied into ws0 from ws1
Dim fRow As Integer 'the first row of the range used in wb0, ws0
Dim lRow0 As Integer 'the last row of the range used in wb0, ws0
Dim lRow1 As Integer 'the last row of the range of accounts in ws2
Dim usedRng As Range 'the full range of cells used in wb0, ws0

Set ws0 = ActiveSheet
Set wb0 = ActiveWorkbook '''''''''''''''
Set rng0 = ws0.Range("A9:A159")

'Find the desired T12 workbook filepath
  'only allow the user to select one file
  Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
  'make the file dialog visible to the user
  fileChoice = Application.FileDialog(msoFileDialogOpen).Show
  'determine what choice the user made
  If fileChoice <> 0 Then
      'get the file path selected by the user
      filePath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
  End If

'Set variables using the newly-opened workbook
Set wb1 = Workbooks.Open(filePath)
Set ws1 = ActiveSheet
Set rng1 = ws1.Range("B9:B159")

'copy wb1, ws1's into wb0, ws0
rng0.Value = rng1.Value
wb1.Close

'create variable to refer to the first tab of wb0
wb0.Worksheets("Sheet1").Activate
Set ws2 = ActiveSheet

With ws2
    lRow1 = Cells(.Rows.Count, "A").End(xlUp).Row 'Last row
End With

'switch back to ws0
ws0.Activate

'identify the range used in ws0 of wb0
Set rng2 = ActiveSheet.UsedRange

fRow = rng2(1).Row 'First row

With ws0
    lRow0 = Cells(.Rows.Count, "A").End(xlUp).Row 'Last row
End With

Dim i As Integer
For i = fRow To lRow0
    With ws0
        'Cells(i, 2).Value = "=MATCH(A9,Sheet2!A9:A100,0)"
        Cells(i, 2).Value = "=MATCH(A" & i & "," & ws2.Name & "!$A$9:$A$" & lRow1 & ", 0)"""
    End With
Next i

End Sub

Я получаю ту же ошибку с Cells.Formula... и с Range.Formula... Я получаю другую ошибку времени выполнения 1004: "Метод 'Range' объекта _ Global не удалось". Мы ценим любые предложения! Я включил полный фрагмент своего макроса для справки... хотя соответствующая часть находится внизу. Заранее спасибо!


person User789    schedule 08.03.2018    source источник
comment
Как называется ws2, в нем есть пробелы? все ли используемые переменные заполнены правильно? Что говорит непосредственное окно, если вы debug.? <formula> проверяете, что оценивает ваш код? Я думаю, это ваше )""", вам нужно только 1 закрытие   -  person Nathan_Sav    schedule 08.03.2018
comment
@Nathan_Sav, ws2 называется Sheet1. Когда я отлаживаю свой курсор, ws2.Name оценивается как Sheets. Отладка таким же образом, i оценивается как 9, а lRow1 оценивается как 108, поэтому все переменные выглядят хорошо. Однако я убрал лишние двойные кавычки в конце, и вуаля! Теперь это работает! Спасибо за ваши глаза :)   -  person User789    schedule 08.03.2018


Ответы (1)


Я думаю, это ваше )""" вам нужно только 1 закрытие"

person Nathan_Sav    schedule 08.03.2018