При попытке скопировать диапазон я получаю несоответствие типов. Этот макрос должен открыть 2 разные рабочие книги, а затем приступает к копированию предварительно определенного набора ячеек, поэтому пустая ячейка в рабочей книге (имя файла1) D19 становится значением уже заполненной ячейки D19 в рабочей книге (имя файла2). Это полный код, над которым я работаю:
Sub OpenWorkbooks()
Application.ScreenUpdating = False
Dim fd As FileDialog
Dim FileName1, FileName2 As String
Dim Rng, ArCell As Range
Set fd = Application.FileDialog(msoFileDialogOpen)
Dim FileChosen As Integer
FileChosen = fd.Show
fd.InitialFileName = "C:\"
fd.InitialView = msoFileDialogViewList
fd.AllowMultiSelect = True
fd.Filters.Clear
fd.Filters.Add "Excel1", "*.xlsx"
fd.Filters.Add "Excel2", "*.xlsm"
fd.FilterIndex = 1
fd.ButtonName = "Select &2Files .xlsm/.xlsx"
If FileChosen <> -1 Then
Else
FileName1 = fd.SelectedItems(1)
Workbooks.Open (FileName1)
FileName2 = fd.SelectedItems(2)
Workbooks.Open (FileName2)
End If
И вот здесь проблемная часть c, отладка выделяет третью строку (добавлено .адрес
Set Rng = Range("D19,D20,I19,I20,C30,C32,C35,C36,D40,D41,D42,D43,D44,D45")
For Each ArCell In Rng.Cells
Workbooks(FileName1).Sheets(1).Range(ArCell.**address**) = Workbooks(FileName2).Sheets(1).Range(ArCell.**address**)
Next ArCell
Application.ScreenUpdating = True
End Sub
отредактировано: @ PaichengWu Я принял ваше предложение, и оно избавилось от проблемы несоответствия типов, , но подписка вне диапазона все еще сохраняется. Я использовал этот вид определения Range = Range раньше, и я вспоминаю его, обходя необходимость в «активации» так почему же он не работает в этих обстоятельствах
Даже при попытке что-то вроде «Workbooks (FileName1) .Activate» перед операцией отладка все равно указывает «Out of range». я такой плотный, я второй раз в жизни работаю над vba ...