Ошибка 91/438 при работе с Set и .Find Range - PullRequest
0 голосов
/ 05 февраля 2020

Предполагается, что эта программа откроет множество рабочих книг. Одна в верхней части списка (имя файла1, план АКА) - это место для загрузки множества различных ячеек данных, каждая другая открытая рабочая книга функционально одинакова. Открытие файла не вызывает проблем.


    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.EnableEvents = False

Dim fd As FileDialog
Dim FileName1 As String
Dim Plan, Leg As Workbook
Dim FileChosen As Integer
Dim CUILT As String
Dim CuiltRange As Range

Set fd = Application.FileDialog(msoFileDialogOpen)

FileChosen = fd.Show

fd.InitialView = msoFileDialogViewList
fd.AllowMultiSelect = True
fd.Filters.Clear
fd.Filters.Add "Plan Excel", "*.xlsx"
fd.Filters.Add "Leg Excel, "*.xlsm"
fd2.FilterIndex = 1

If FileChosen <> -1 Then

MsgBox "The Operation has been stopped"

Else

FileName1 = fd2.SelectedItems(1)
Workbooks.Open (FileName1)
Set Plan = ActiveWorkbook

For i = 2 To fd2.SelectedItems.Count
Workbooks.Open fd2.SelectedItems(i)
Set Leg = ActiveWorkbook

CUILT = Leg.Sheets(1).Range("I19").Value

Plan.Worksheets(1).Activate

Теперь пришла часть кода, которая доставляет мне неприятности, с помощью какого-то другого поста, который я смог перебрать изощренный характер поиска: Функция переменной , но сразу после того, как я смог разобрать эту ошибку, «Found Range Variable = Range» теперь просто не хочет сотрудничать. Это дает мне ошибку 91, как будто CuiltRow на самом деле не сохраняет никакого значения в предыдущей операции Set, даже когда я пытаюсь MsgBox после «Set», чтобы выяснить это, если просто говорит мне, что оно не определено. попытка завершилась

ошибка 438 "объект не поддерживает свойство или метод".

Set CuiltRow = Plan.Sheets(1).Range("C16:C421").Find(CUILT, LookIn:=xlValues, LookAt:=xlWhole)
CuiltRow.Offset(0, 5).Range("A1").Value = Leg.Sheets(1).Range("D14").Value

Set CuiltRow не будет работать без Set, и я знаете, набор является причиной 91? Честно говоря, я в растерянности, любая помощь будет оценена!


Next i
'Else
'End If

MsgBox "Operation has been completed"
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True

End If
End Sub

Я просто хочу использовать диапазон, возвращаемый CuiltRow в качестве контрольной путевой точки, чтобы установить множество смещений, но с моим плохим синтаксисом в " Функция Range (offset) = Range VBA полагает, что я пытаюсь установить значение в объект Range, как я могу express изменить его так, чтобы он был чист?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...