У меня есть следующий блок кода, который перебирает поля каждой таблицы и добавляет поля текущей таблицы соответственно, чтобы создать несколько таблиц.
'iterate through every table
For i=1 To arrTCount
'the arrFF array holds the names of the fields of each table
arrFF = Split(arrFields(i), ", ")
arrFFCount = UBound(arrFF)
'create a tablebox
Set TB = ActiveDocument.Sheets("Main").CreateTableBox
'iterate through the fields of the array
For j=0 to (arrFFCount - 1)
'add the field to the tablebox
TB.AddField arrFF(j)
'Msgbox(arrFF(j))
Next
Set tboxprop = TB.GetProperties
tboxprop.Layout.Frame.ObjectId = "TB" + CStr(i)
TB.SetProperties tboxprop
Next
Приведенный выше код создает таблицы, но каждый раз с одним полем (последнее отсутствует). Если я изменю цикл For
с For j=0 To (arrFFCount - 1)
на For j=0 To (arrFFCount)
, он создаст пустые табличные ящики и, кажется, будет выполняться вечно. Что касается этого изменения, я протестировал имена полей с помощью команды Msgbox(arrFF(j))
, и она показывает мне правильные имена полей, так как я хочу, чтобы они были в табличных ящиках в пользовательском интерфейсе QlikView.
Кто-нибудь имеет представление о том, в чем здесь проблема? Могу ли я сделать это по-другому?
Чтобы прояснить ситуацию здесь и то, что я тестировал до сих пор, у меня есть 11 таблиц, из которых я делаю таблицы, и я попробовал использовать только одну из них или некоторые из них. Результат, который я вижу с помощью кода, находится слева, а то, что я ожидаю увидеть, - справа от следующего изображения. Обратите внимание, что количество полей варьируется для каждой таблицы, и в качестве примера приведено только одно из них.