Предполагается, что эта программа откроет множество рабочих книг. Одна в верхней части списка (имя файла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 изменить его так, чтобы он был чист?