ВБА листови - Ултимативни водич

Ово је крајњи водич за рад са листовима / радним листовима у Екцелу.

На дну овог водича створили смо листу уобичајених команди за рад са листовима.

Схеетс Вс. Радни листови

Постоје два начина позивања на Табеле помоћу ВБА. Први је са објектом Схеетс:

1 Табеле („Лист1“). Активирајте

Други је са објектом Ворксхеетс:

1 Радни листови („Лист1“). Активирајте

99% времена ова два објекта су идентична. У ствари, ако сте на Интернету тражили примере ВБА кода, вероватно сте видели да се користе оба објекта. Ево разлике:

Збирка листова садржи радне листове и листове графикона.

Зато користите Табеле ако желите да укључите редовне радне листове И листове графикона. Користите радне листове ако желите да искључите листове графикона. За остатак овог водича користићемо табеле и радне листове наизменично.

Референцирање листова

Постоји неколико различитих начина позивања на листове:

  • АцтивеСхеет
  • Назив картице Схеет
  • Број индекса листа
  • Кодни назив листа

АцтивеСхеет

АцтивеСхеет је лист који је тренутно активан. Другим речима, ако сте паузирали код и погледали Екцел, видљив је лист. Пример кода у наставку ће приказати оквир за поруке са именом АцтивеСхеет.

1 МсгБок АцтивеСхеет.Наме

Назив листа

Вероватно сте највише упознати са позивањем на Табеле према називу картице:

1 Табеле („ТабНаме“). Активирајте

Број индекса листа

Број индекса листова позиција је листа у радној свесци. 1 је први лист. 2 је други лист итд .:

1 Листови (1) .Активирајте

Број индекса листа - последњи лист у радној свесци

Да бисте се позвали на последњи лист у радној свесци, користите Схеетс.Цоунт да бисте добили последњи број индекса:

1 Табеле (Схеетс.Цоунт) .Активирајте

Лист „Назив кода“

Кодни назив листа је назив објекта у ВБА:

1 ЦодеНаме.Ацтивате

Референцирање листова у другим радним свескама

Такође је лако упутити листове у друге радне свеске. Да бисте то урадили, морате да користите Објекат радне свеске:

1 Радне свеске ("ВБА_Екамплес.клсм"). Радни листови ("Лист 1"). Активирајте

Важно: Радна свеска мора бити отворена да бисте могли да погледате њене табеле.

Активирај у односу на Изабери лист

У другом чланку расправљамо о активирању и избору листова. Кратка верзија је следећа:

Када активирате лист, он постаје АцтивеСхеет. Ово је лист који бисте видели да погледате свој Екцел програм. Одједном се може активирати само један лист.

Активирајте лист

1 Табеле („Лист1“). Активирајте

Када изаберете лист, он такође постаје АцтивеСхеет. Међутим, можете одабрати више листова одједном. Када се одабере више листова одједном, „горњи“ лист је АцтивеСхеет. Међутим, можете да мењате АцтивеСхеет унутар изабраних листова.

Изаберите лист

1 Табеле („Лист 1“). Изаберите

Изаберите Више листова

Помоћу низа изаберите више листова одједном:

1 Радни листови (Низ ("Лист 2", "Лист 3")). Изаберите

Променљива радног листа

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

Да бисте прогласили променљиву радног листа:

1 Дим вс као радни лист

Доделите радни лист променљивој:

1 Сет вс = Схеетс ("Схеет1")

Сада се можете позивати на променљиву радног листа у свом коду:

1 вс.Ацтивате

Прелистајте све листове у радној свесци

Променљиве радног листа су неопходне када желите да прођете кроз све радне листове у радној свесци. Најлакши начин да то учините је:

12345 Затамни као радни листЗа сваки вс у радним листовимаМсгБок вс.намеНект вс

Овај код ће проћи кроз све радне листове у радној свесци, приказујући сваки назив радног листа у оквиру за поруку. Прелиставање свих листова у радној свесци веома је корисно при закључавању / откључавању или скривању / откривању више радних листова одједном.

Заштита радног листа

Заштита радне свеске

Заштита радне свеске закључава радну свеску од структурних промена попут додавања, брисања, премештања или скривања радних листова.

Можете да укључите заштиту радне свеске помоћу ВБА:

1 АцтивеВоркбоок.Протецт Пассворд: = "Лозинка"

или онемогућите заштиту радне свеске:

1 АцтивеВоркбоок.УнПротецт Пассворд: = "Лозинка"

Напомена: Такође можете заштитити / уклонити заштиту без лозинке изостављањем аргумента Лозинка:

1 АцтивеВоркбоок.Протецт

Заштита радног листа

Заштита на нивоу радног листа спречава промене појединачних радних листова.

Заштитите радни лист

1 Радни листови („Лист1“). Заштитите „Лозинку“

Уклони заштиту радног листа

1 Радни листови („Лист1“). Уклоните заштиту са „лозинке“

Постоје различите опције за заштиту радних листова (дозволите промене у обликовању, дозволите кориснику да убаци редове итд.) Препоручујемо коришћење Макро снимача за снимање жељених поставки.

Овде детаљније расправљамо о заштити радног листа.

Радни лист Видљива својина

Можда већ знате да се радни листови могу сакрити:

Постоје заправо три поставке видљивости радног листа: Видљиво, Скривено и ВериХидден.Скривене листове може открити сваки обичан корисник програма Екцел - десним тастером миша у области картице радног листа (приказано горе). ВериХидден листови могу се открити само помоћу ВБА кода или из ВБА уређивача. Користите следеће примере кода да бисте сакрили / открили радне листове:

Откриј радни лист

1 Радни листови ("Лист1"). Видљив = клСхеетВисибле

Сакриј радни лист

1 Радни листови ("Лист1"). Висибле = клСхеетХидден

Врло сакриј радни лист

1 Радни листови („Лист1“). Видљив = клСхеетВериХидден

Догађаји на радном листу

Догађаји су покретачи који могу изазвати покретање „Процедура догађаја“. На пример, можете изазвати покретање кода сваки пут када се промени било која ћелија на радном листу или када се радни лист активира.

Поступци догађаја на радном листу морају бити смештени у модул радног листа:

Постоје бројни догађаји на радном листу. Да бисте видели комплетну листу, идите на модул радног листа, изаберите „Радни лист“ из првог падајућег менија. Затим одабиром процедуре догађаја из другог падајућег менија да бисте је уметнули у модул.

Радни лист Активирај догађај

Догађаји за активирање радног листа покрећу се сваки пут када се радни лист отвори.

123 Приватни под -радни лист_Ацтивате ()Распон ("А1"). ИзаберитеЕнд Суб

Овај код ће изабрати ћелију А1 (ресетовање области приказа у горњи леви део радног листа) сваки пут када се радни лист отвори.

Догађај промене радног листа

Догађаји промене радног листа покрећу се сваки пут када се промени вредност ћелије на радном листу. За више информација прочитајте наш водич о догађајима промене радног листа.

Радни лист Цхеат Схеет

Испод ћете пронаћи таблицу са уобичајеним примерима кода за рад са листовима у ВБА

ВБА радни листови Цхеатсхеет

ВБА радни листови Цхеатсхеет
ОписПример кода
Референцирање и активирање листова
Назив картицеТабеле („Унос“). Активирајте
ВБА кодни називЛист1.Активирајте
Индексна позицијаЛистови (1) .Активирајте
Изаберите Лист
Изаберите ЛистТабеле („Унос“). Изаберите
Подесите на ВариаблеЗатамни као радни лист
Поставите вс = АцтивеСхеет
Име / ПреименујАцтивеСхеет.Наме = "Ново име"
Следећи листАцтивеСхеет.Нект.Ацтивате
Прођите кроз све листовеЗатамни као радни лист
За сваки вс у радним листовима
Мсгбок вс.наме
Нект вс
Прелистајте одабране листовеДим вс Ас Ворксхеет
За сваки вс у АцтивеВиндов.СелецтедСхеетс
МсгБок вс.Наме
Нект вс
Набавите АцтивеСхеетМсгБок АцтивеСхеет.Наме
Адд СхеетСхеетс.Адд
Додајте лист и називСхеетс.Адд.Наме = "Нови лист"
Додајте лист са именом из ћелијеСхеетс.Адд.Наме = ранге ("а3"). Валуе
Додај лист за другимСхеетс.Адд Афтер: = Схеетс ("Инпут")
Додајте лист по и имеСхеетс.Адд (Афтер: = Схеетс ("Инпут")). Наме = "НевСхеет"
Додајте лист пре и имеСхеетс.Адд (Бефоре: = Схеетс ("Инпут")). Наме = "НевСхеет"
Додајте лист на крај радне свескеСхеетс.Адд Афтер: = Схеетс (Схеетс.Цоунт)
Додајте лист на почетак радне свескеСхеетс.Адд (Бефоре: = Схеетс (1)). Наме = "ФирстСхеет"
Додај лист променљивојДим вс Ас Ворксхеет
Сет вс = Схеетс.Адд
Копирај радне листове
Премести лист на крај радне свескеТабеле („Лист1“). Премести после: = Табеле (Табеле.Број)
У нову радну свескуТабеле („Лист1“). Копирај
Одабрани листови за нову радну свескуАцтивеВиндов.СелецтедСхеетс.Цопи
Пре другог листаТабеле ("Лист1"). Копирај пре: = Табеле ("Лист2")
Пре првог листаТабеле („Лист1“). Копирај пре: = Табеле (1)
После последњег листаТабеле („Лист 1“). Копирај после: = Табеле (Табела. Број)
Копија и имеТабеле („Лист1“). Копирај после: = Табеле (Табеле.Број)
АцтивеСхеет.Наме = "Последњи лист"
Копирај и дај назив из вредности ћелијеТабеле („Лист1“). Копирај после: = Табеле (Табеле.Број)
АцтивеСхеет.Наме = Опсег ("А1"). Вредност
У другу радну свескуТабеле („Лист1“). Копирај пре: = Радне свеске („Пример.клсм“). Табеле (1)
Сакриј / Откриј табеле
Сакриј листСхеетс ("Схеет1"). Висибле = Нетачно
или
Схеетс ("Схеет1"). Висибле = клСхеетХидден
Откриј табелуТабеле („Лист1“). Видљиво = Тачно
или
Схеетс ("Схеет1"). Видљив = клСхеетВисибле
Вери Хиде СхеетТабеле („Лист 1“). Видљиво = клСхеетВериХидден
Брисање или брисање табела
Избриши листТабеле („Лист1“). Избришите
Избриши лист (руковање грешкама)На Грешка Настави даље
Табеле („Лист1“). Избришите
Он Еррор ГоТо 0
Избриши лист (без упита)Апплицатион.ДисплаиАлертс = Нетачно
Табеле („Лист1“). Избришите
Апплицатион.ДисплаиАлертс = Тачно
Цлеар СхеетЛистови ("Лист1"). Ћелије.Очисти
Само јасан садржај листаСхеетс ("Схеет1"). Целлс.ЦлеарЦонтентс
Цлеар Схеет УседРангеСхеетс ("Схеет1"). УседРанге.Цлеар
Заштитите или уклоните заштиту листова
Уклони заштиту (без лозинке)Табеле („Лист1“). Уклоните заштиту
Уклони заштиту (лозинка)Табеле („Лист1“). Уклоните заштиту са „лозинке“
Заштита (без лозинке)Табеле („Лист1“). Заштитите
Заштита (лозинка)Табеле („Лист 1“). Заштитите „Лозинку“
Заштитите, али дозволите приступ ВБАТабеле („Лист 1“). Заштитите УсерИнтерфацеОнли: = Тачно
Уклоните заштиту са свих табелаДим вс Ас Ворксхеет
За сваки вс у радним листовима
вс.Унпротецт "пассворд"
Нект вс
wave wave wave wave wave