Този урок ще покаже как да създавате и използвате масиви от обекти във VBA.
Във VBA масивите са променливи, които съхраняват множество стойности. Можете да съхранявате VBA обекти в масиви по същия начин, както бихте съхранили всички други данни.
Деклариране на обектния масив
В този пример ще декларираме масив от VBA работни листове:
1 | Dim arWks (3) Като работен лист |
Попълване на масив от статични обекти
Обявете обектния масив за статичен и след това можете да попълните масива с листа, които сте избрали от работната си книга.
12345678 | Sub TestObjArray ()'дефинирайте масива като масив от работен листЗатъмнете arWks (1 до 3) като работен лист„добавете 3 листа в масиваset arWks (1) = Листове (1)set arWks (2) = Листове (2)Задайте arWks (3) = Листове (3)End Sub |
Попълване на масив от динамични обекти
Можете да обявите обектния масив за динамичен и след това да преброите листовете в работната книга, преди да присвоите размера на масива на обектния масив.
1234567891011121314 | Sub TestObjArray ()'дефинирайте масива като масив от работен листDim arWks () Като работен лист'пребройте колко работни листа във файла и повторно затъмнете масиваDim n като цяло числоDim i As Integer'пребройте листовете и минус едно, за да зададете границите за масиваn = Application.Sheets.Count - 1ReDim arWks (n)'попълнете масива на работния лист с всички листове в работната книгаЗа i = LBound (arWks) към UBound (arWks)Задайте arWks (i) = ActiveWorkbook.Sheets (i + 1)Следва iEnd Sub |
В горния пример първо декларираме масива на работния лист. След това преброяваме броя листове в работната книга и присвояваме тази стойност минус един на UBound на масива. Това се дължи на факта, че LBound на масива започва като 0. Накрая преглеждаме листа и добавяме всеки лист към масива.
Използване на обектния масив във VBA кода
След като попълним масива на работния лист, можем да използваме VBA за цикъл през масива.
123456789101112131415161718 | Sub TestObjArray ()'дефинирайте масива като масив от работен листDim arWks () Като работен лист'пребройте колко работни листа във файла и повторно затъмнете масиваDim n като цяло числоDim i As Integer'пребройте листовете и минус едно, за да зададете границите за масиваn = Application.Sheets.Count - 1ReDim arWks (n)'попълнете масива на работния лист с всички листове в работната книгаЗа i = LBound (arWks) към UBound (arWks)Задайте arWks (i) = ActiveWorkbook.Sheets (i + 1)Следва i„направете нещо за всеки лист в масиваЗа i = LBound (arWks) към UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = ВярноСледва iEnd Sub |
В горния пример, ние циклично преминаваме през масива и удебеляваме първия ред на всеки лист в масива.