Частый доступ к данным таблицы - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь прочитать таблицу с листа и сохранить в листобъекте. Мне нужно использовать эти данные таблицы несколько раз, и я не хочу получать доступ к листу каждый раз, когда мне нужны данные таблицы . Я думаю, что доступ к рабочему листу каждый раз снижает производительность. Также мне нужно ссылаться на данные таблицы на основе имени заголовка. Я думал написать что-то вроде этого.

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

Есть идеи, что здесь может быть не так. Я думаю, глядя на этот код снова и снова, я снова натыкаюсь на стену. Мне нужна еще одна пара глаз, чтобы помочь мне.

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