Распоредите променљиве помоћу ВБА у програму Мицрософт Екцел 2010

Како се користи Екцел ВБА низ?

Макрое можете покренути било из уређивача Висуал Басиц -а тако што ћете поставити курсор у макро и притиснути тастер Ф5, или из програма Екцел тако што ћете отворити дијалошки оквир Макрои (АЛТ+Ф8) одабиром макроа за покретање и кликом на Покрени. Најбоље је покренути ове макрое из Висуал Басиц Едитор -а помоћу Дебуг> Степ Инто (притиском на Ф8) тако да их можете гледати док раде. Упутство Ако картица Девелопер није на траци …

  • Отворите Екцел.
  • Идите на ВБА Едитор (притисните Алт + Ф11)
  • Идите на непосредни прозор. (Цтрл + Г)
  • Напишите испод Код.
    • Апплицатион.СховДевТоолс = Тачно

Како уметнути ВБА код у Екцел

  • Иди на Девелопер Таб> Код Група> Вижуал бејзик
  • Кликните Инсерт > Модул.
  • Отвориће вам празан модул.
  • Напишите / залепите дати код у тај модул

Како покренути ВБА код у програму Екцел

  • Изаберите било где између кода, Суб… Крај Суб
  • Кликните Покрени & Рун Суб или Ф5

Статичке променљиве низа

Уместо да користите неколико јединствених променљивих за складиштење информација, можете користити променљиву низа.

Када знате колико елемената морате да ускладиштите у низу, можете користити статичку променљиву низа попут ове:

Код


Под ТестСтатицАрраи ()
'складишти 10 имена у радној свесци у променљивој поља МиНамес ()
Дим МиНамес (1 до 10) Ас Стринг 'декларише променљиву статичког низа
Затамните иЦоунт као цео број
Фор иЦоунт = 1 То ТхисВоркбоок.Схеетс.Цоунт
МиНамес (иЦоунт) = ТхисВоркбоок.Схеетс (иЦоунт) .Назив
Дебуг.Принт МиНамес (иЦоунт)
Следећи иЦоунт
Ерасе МиНамес () 'брише садржај променљиве, ослобађа мало меморије
Енд Суб

Децоде

Дим МиНамес (1 до 10) као низ

Имамо димензионисање једног променљивог МиНамес-а као стринг, који може да садржи 10 ставки у њему. Дакле, МиНамес вериабле је тип низа.

Затамните иЦоунт као цео број

Декларисали смо једну променљиву иЦоунт као цео број, који може да садржи само вредност нумеричког целог броја

Фор иЦоунт = 1 То ТхисВоркбоок.Схеетс.Цоунт

ТхисВоркбоок.Схеетс.Цоунт ће нам дати број листова у радној свесци. Ова радна свеска се односи на радну свеску у којој је написан код.

МиНамес (иЦоунт) = ТхисВоркбоок.Схеетс (иЦоунт) .Назив

Користећи петљу, сваком листу додељујемо једну променљиву која се зове МиНамес. МиНамес је променљив тип низа, па ће складиштити сваки назив листа у свакој ставци низа.

Дебуг.Принт МиНамес (иЦоунт)

Одмах након додељивања вредности свакој ставци низа, иста ће се одштампати у програму ИммедиатеВиндов, подразумевано на дну прозора ВБА. Можете погледати додељивање сваке вредности и приказати њену вредност у програму ИммедиатеВиндов.

Следећи иЦоунт

Даље се користи да каже Фор Лооп у програму Екцел ВБА, да понови исти задатак, повећањем бројача иЦоунт, све док иЦоунт не достигне укупан број листова у радној свесци.

Променљиве динамичког низа

Променљиве динамичког низа су корисне ако унапред не знате о колико елемената вам је потребно за складиштење информација.

Декларишете променљиве динамичког низа баш као статичке променљиве низа, осим што не дајете никакве информације о величини низа.

У горњем примеру (Дим МиНамес (1 до 10) као низ) ако је број листова већи од 10, то ће се догодити грешком, јер МиНамес неће моћи да ускладишти више од 10 ставки.

Код

Под ТестДинамицАрраи ()
'складишти сва имена у радној свесци у променљивој поља МиНамес ()
Дим МиНамес () Ас Стринг 'декларише променљиву динамичког низа
Затамните иЦоунт као цео број
Дим Мак Ас Интегер
Мак = ТхисВоркбоок.Схеетс.Цоунт 'проналази максималну величину низа
РеДим МиНамес (1 То Мак) 'декларише променљиву низа потребне величине
За иЦоунт = 1 до макс
МиНамес (иЦоунт) = ТхисВоркбоок.Схеетс (иЦоунт) .Назив
МсгБок Моја имена (иЦоунт)
Следећи иЦоунт
Ерасе МиНамес () 'брише променљиви садржај, ослобађа мало меморије
Енд Суб

Децоде

Дим МиНамес () Ас Стринг

Имамо димензионисање једног променљивог МиНамес-а као низа, који је тип низа, због отварања и затварања парантхесис-а, након променљивог имена, али нећемо моћи да складиштимо никакве податке у њему, јер нисмо обезбедили његов горњи ниво.

РеДим МиНамес (1 до макс.)

Редим се користи за поновно димензионисање низа, сада ће доделити горњи ниво променљиве типа низа.

У овом случају, укупан број листова у радној свесци (Мак = ТхисВоркбоок.Схеетс.Цоунт)

МсгБок Моја имена (иЦоунт)

У последњем примеру, одштампали смо вредност у променљивим у непосредном прозору, овај пут, вредност штампамо у МессагеБок -у, који ће се појавити овако …

Ако знате да ће вам требати променљива низа са 1000 ставки, користите статичку променљиву. Недостатак је што ћете сваки пут користити меморију за 1000 ставки, такође у случајевима када складиштите само податке о 10 ставки. Ако користите променљиву динамичког низа, меморију ћете користити ефикасније.

Понекад није могуће израчунати колико велика променљива низа треба да буде велика. У овим случајевима величину променљиве низа је потребно повећати према потреби. Када користите а РеДим-изјава за промену величине променљиве низа, садржај променљиве се такође брише како би се избегло брисање садржаја променљиве када Редим променљива низа коју ћете морати да користите РеДим Пресерве-изјава.

Код

Суб ГетФилеНамеЛист ()
'складишти сва имена датотека у тренутној фасцикли
Дим ФолдерФилес () Ас Стринг 'декларише променљиву динамичког низа
Дим тмп Ас Стринг, фЦоунт Ас Интегер
фЦоунт = 0
тмп = Дир ("Д: \ Тест \*.*")
Док је тмп празан
фЦоунт = фЦоунт + 1
РеДим Пресерве ФолдерФилес (1 до фЦоунт)
'поново декларише променљиву низа (величина+1)
ФолдерФилес (фЦоунт) = тмп
тмп = Дир
Венд
МсгБок фЦоунт & "имена датотека налазе се у фасцикли" & ЦурДир
Ерасе ФолдерФилес 'брише променљиви садржај и ослобађа мало меморије
Енд Суб

Децоде

Дим ФолдерФилес () Ас Стринг

Имамо димензионисање једне променљиве ФолдерФилес као стринг, који је типа Арраи, због отварања и затварања парантезе, након имена које се може променити, али нећемо моћи да складиштимо никакве податке у њој, јер нисмо обезбедили њен горњи ниво.

тмп = Дир ("Д: \ Тест \*.*")

Наредба Дир ради као истраживач, који може да садржи име свих датотека и фасцикли у директоријуму. Такође можете ограничити све датотеке на неке посебне критеријуме. Дир ("Д: \ Тест \*. Пдф") ће ограничити све датотеке само на ПДФ датотеке или проширење.

Док је тмп празан

Уместо Фор петље у Екцел ВБА, овај пут понављамо исту радњу, користећи Екцел ВБА ВХИЛЕ ЛООП, где су критеријуми за прекид петље постављени као тмп а не једнаки празном. Дакле, све док није постојала вредност у тмп вериабле, петља ће радити.

РеДим Пресерве ФолдерФилес (1 до фЦоунт)

Датотеке фасцикли које се могу променити у низу немају горњи ниво на почетној позицији. Али, у сваком понављању ће повећати горњи ниво наредбом РеДим. У првом покретању 1, затим 2 … и тако даље, до фЦоунт.Међутим, са сваким повећањем горњег нивоа, изгубиће се све већ додељене променљиве. Помоћу наредбе Пресерве можемо задржати или сачувати већ додељену вредност.

Венд

Венд је имао обичај да каже Фор Лоопс у ВБА, да понови исти задатак поново, све док критеријуми не буду испуњени.

МсгБок фЦоунт & "имена датотека налазе се у фасцикли" & ЦурДир

При сваком понављању, фцоут ће се повећавати са +1, а коначна вредност ће бити број датотека пронађених у том директоријуму / фасцикли. Наредба ЦурДир даје име тренутног директоријума. У овом случају „Д: \ Тест“

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave