Я пытаюсь скопировать рабочие листы из основной книги в целевую книгу, но скопированные мной листы различаются в зависимости от того, присутствует ли значение в rngCurrent в имени листа. По какой-то причине я продолжаю получать индекс или ошибку диапазона на последней строке. Может ли кто-нибудь помочь мне понять, что происходит?Копирование динамического массива вызывает ошибку подстрочного индекса
Sub test2()
Dim wb As Workbook
Dim master As Workbook
Dim wbCurrent As Workbook
Dim wbAdjustments As Workbook
Dim wsName As Worksheet
Dim rngEntityList As Range
Dim rngCurrentEntity As Range
Dim rngCurrent As Range
Dim arrWorksheets As Variant
Dim i As Integer
Dim wsCount As Integer
Set master = ThisWorkbook
Set rngCurrentEntity = master.Sheets("File Info").Range("rng_Entity") 'named range of single entity
Set rngEntityList = master.Sheets("Global").Range("rng_EntityList") 'list or entities
Set rngCurrent = rngEntityList.Find(rngCurrentEntity.Value, LookIn:=xlValues) ' find single entity in the list
If rngCurrent.Offset(, 4).Value = "FRP" Then 'find if it's FRP
Set wb = Application.Workbooks("Foreign.xlsx")
Else
Set wb = Application.Workbooks("Domestic.xlsx")
End If
Dim ws() As String ' declare string array
ReDim ws(wb.Worksheets.Count) As String ' set size dynamically
Dim counter As Long ' running counter for ws array
counter = 1
For i = 1 To wb.Worksheets.Count
If InStr(1, wb.Worksheets(i).Name, rngCurrent.Value) <> 0 Then
ws(counter) = wb.Worksheets(i).Name
counter = counter + 1
End If
Next
ReDim Preserve ws(counter) As String ' Get rid of empty array entries
wb.Worksheets(ws).Copy After:=master.Worksheets(master.Worksheets.Count)
End Sub
EDIT Причина мне нужно сделать это таким образом, потому что я не хочу, чтобы внешние ссылки на источник ноутбука.
какой линии вы получаете свою ошибку? –
По умолчанию нижняя граница массива равна нулю, а не одному. Ваша ошибка связана с отсутствием содержимого в 0-м слоте в вашем массиве. Попробуйте 'ReDim ws (от 1 до wb.Worksheets.Count)' (указав как верхнюю, так и нижнюю границы без 'As String') –
@ShaiRado Я получаю сообщение об ошибке на странице wb.Worksheets (ws) .Copy –