Я пытаюсь прочитать таблицу с листа и сохранить в листобъекте. Мне нужно использовать эти данные таблицы несколько раз, и я не хочу получать доступ к листу каждый раз, когда мне нужны данные таблицы . Я думаю, что доступ к рабочему листу каждый раз снижает производительность. Также мне нужно ссылаться на данные таблицы на основе имени заголовка. Я думал написать что-то вроде этого.
public Tbl_MyTable as listobject
public Arr as variant
Set Tbl_MyTable = Workbooks("Myworkbook").worksheets("Myworksheet").ListObjects("Tbl1")
tRows = Tbl_MyTable .DataBodyRange.Rows.Count
for i=1 to 10
config= ArrConfig(i)
call readtable(tRows, config)
Set Destination = workbooks("x").sheets("y").Range("A2")
Destination.Resize(1,UBound(Arr, 1)).Value = Arr
'Create the table based on the populated data.
Set populated_area = Destination.CurrentRegion
Set Create_Table = .ListObjects.Add(xlSrcRange, populated_area, , xlYes)
Create_Table.name = (.name & "_tbl")
Create_Table.TableStyle = "TableStyleMedium15"
'Select this newly created table and do some data reformating
With ActiveSheet.ListObjects("" & Tbl_name & "").Range.Select
'Change entire Table font
With Selection.Font
.name = "Calibri Light"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMajor
End With
End with
...
...
...
'Inside Sub readtable
For i = 1 To tRows
if config= A
Arr(i) = Range("Tbl_MyTable[Header1]")(i).Value
else if config =B
Arr(i) = Range("Tbl_MyTable[Header2]")(i).Value
else
Arr(i) = Range("Tbl_MyTable[Header3]")(i).Value
end if
.
.
Проблема в том, что это работает только для первой итерации верхнего уровня l oop. В следующий раз я получаю следующую ошибку (Почему-то я получаю несколько ошибок при каждом запуске. Не все появляются каждый раз)
Run-time error '1004' : Method 'Range' of object'_Global' failed
Error number: 90 Subscript out of range
Есть идеи, что здесь может быть не так. Я думаю, глядя на этот код снова и снова, я снова натыкаюсь на стену. Мне нужна еще одна пара глаз, чтобы помочь мне.