ВБА - Како направити каскадни комбиновани оквир у усерформу

ВБА - Како направити каскадни комбиновани оквир у усерформу

Увод

У овом чланку ћете научити како да попуните каскадни комбиновани оквир користећи Индирецт методу.

Предувјети

  • 1 воркбоок
  • 1 УсерФорм
  • 3 цомбобок.

Такође можете преузети узорак радне свеске овде: //цјоинт.цом/14ау/ДХхоотЦЛИВх.хтм

Управљање именима у Екцелу

Да бисте дефинисали имена у радној књизи програма Екцел, можете:
  • Екцел 2007 или старија верзија: Инсерт> Намес> Дефине .
  • Као у програму Екцел 2010: Риббон ​​формуле> Дефинишите име.

Шифра за списак

Желимо да се деси следеће:
  • Након учитавања корисничке форме, ЦомбоБок1 ће бити попуњен.
  • Остале комбиноване кутије ће бити попуњене на основу вредности прве.

Попуните прву листу

Да бисте попунили комбиновани оквир са садржајем именованог опсега радне свеске, синтакса је:
  • ЦомбоБок1.Лист = Апплицатион.Транспосе (опсег ("монНом"))

Да бисте избрисали комбиновани оквир:

  • Цомбобок1.Цлеар

Шта нам даје шифру за попуњавање прве падајуће листе при учитавању корисничке форме:

 Привате Суб УсерФорм_Инитиализе () ЦомбоБок1.Цлеар ЦомбоБок1.Лист = Апплицатион.Транспосе (Ранге ("Деп")) ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар Енд Суб 

Попуњавање 2. листе

Када се изабере вредност у првој падајућој листи, она ће (текст приказан у комбинованом оквиру) одговарати имену радне свеске.

Да би се приказао садржај ћелија именованог опсега, користићемо догађај Промени:

 Приватни Суб ЦомбоБок1_Цханге () 'Цомбобок департемент Избегните грешку насталу када корисник обрише садржај ЦомбоБок1 ако ЦомбоБок1.Валуе = "" Затим Екит Суб ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар ЦомбоБок2.Лист = Апплицатион.Транспосе (Ранге (НомРанге)) Енд Суб 

За трећи комбиновани оквир:

 Привате Суб ЦомбоБок2_Цханге () 'ЦомбоБок2.Валуе = "" Затим Екит Суб ЦомбоБок3.Цлеар ЦомбоБок3.Лист = Апплицатион.Транспосе (Ранге (НомРанге)) Енд Суб 

Уобичајене грешке

Неименовани опсег

Име унето у ЦомбоБок неће одговарати називу радне свеске. То се дешава када име није дефинисано. Да бисмо заобишли овај проблем, креират ћемо малу функцију која ће се провлачити кроз сва имена радне књиге:

 Функција НомДефини (Ном ас Стринг) Као Боолеан Дим Номс као Име НомДефини = Фалсе за сваки Номс Ин ТхисВоркбоок.Намес Ако Номс.Наме = Ном онда НомДефини = Труе: Екит Функција Нект Номс Енд Фунцтион 

Инпут еррор

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

Ево примера:

 Функција ЦарацСпец (Ном ас Стринг) Као Стринг ЦарацСпец = Замени (Ном, "", "_") ЦарацСпец = Замени (ЦарацСпец, "-", "_") Крај функције 

Попуњени код

 Оптион Екплицит Привате Суб УсерФорм_Инитиализе () ЦомбоБок1.Цлеар ЦомбоБок1.Лист = Апплицатион.Транспосе (Ранге ("Деп")) ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар Енд Суб Приватни Суб ЦомбоБок1_Цханге () 'Цомбобок департемент Иф ЦомбоБок1.Валуе = "" Суб ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар Дим НомРанге Ас Стринг НомРанге = ЦарацСпец (ЦомбоБок1.Валуе) Ако је НомДефини (НомРанге) Онда ЦомбоБок2.Лист = Апплицатион.Транспосе (Ранге (НомРанге)) Елсе ЦомбоБок2.АддИтем "" "Ауцуне цоммуне" "" Енд Иф Енд Суб Привате Суб ЦомбоБок2_Цханге () 'Комбиниране комуне Ако ЦомбоБок2.Валуе = "" Затим изадите Суб ЦомбоБок3.Цлеар Дим НомРанге Ас Стринг НомРанге = ЦарацСпец (ЦомбоБок2.Валуе) Ако НомДефини (НомРанге) Затим ЦомбоБок3.Лист = Апплицатион.Транспосе (Опсег (НомРанге)) Елсе ЦомбоБок3.АддИтем "" Ауцуне руе "" "Крај Ако заврши подфункција НомДефини (Ном као низ) Као логички Дим Номс као име НомДефини = Фалсе за сваки Номс Ин ТхисВоркбоок.Намес Иф Номс.Наме = Ном Затим НомДефини = Труе: Излаз Функција Нект Номс Енд Фунцтион Функција Царац Спец (Ном ас Стринг) Ас Стринг ЦарацСпец = Замените (Ном, "", "_") ЦарацСпец = Замените (ЦарацСпец, "-", "_") Енд Фунцтион 

Линк за скидање

Преузмите узорак на овом линку: //цјоинт.цом/?ДХхоотЦЛИВх

ВБА - Како направити каскадни комбиновани оквир у усерформу

Увод

У овом чланку ћете научити како да попуните каскадни комбиновани оквир користећи Индирецт методу.

Предувјети

  • 1 воркбоок
  • 1 УсерФорм
  • 3 цомбобок.

Такође можете преузети узорак радне свеске овде: //цјоинт.цом/14ау/ДХхоотЦЛИВх.хтм

Управљање именима у Екцелу

Да бисте дефинисали имена у радној књизи програма Екцел, можете:
  • Екцел 2007 или старија верзија: Инсерт> Намес> Дефине.
  • Као у програму Екцел 2010: Риббон ​​формуле> Дефинишите име.

Шифра за списак

Желимо да се деси следеће:
  • Након учитавања корисничке форме, ЦомбоБок1 ће бити попуњен.
  • Остале комбиноване кутије ће бити попуњене на основу вредности прве.

Попуните прву листу

Да бисте попунили комбиновани оквир са садржајем именованог опсега радне свеске, синтакса је:
  • ЦомбоБок1.Лист = Апплицатион.Транспосе (опсег ("монНом"))

Да бисте избрисали комбиновани оквир:

  • Цомбобок1.Цлеар

Шта нам даје шифру за попуњавање прве падајуће листе при учитавању корисничке форме:

 Привате Суб УсерФорм_Инитиализе () ЦомбоБок1.Цлеар ЦомбоБок1.Лист = Апплицатион.Транспосе (Ранге ("Деп")) ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар Енд Суб 

Попуњавање 2. листе

Када се изабере вредност у првој падајућој листи, она ће (текст приказан у комбинованом оквиру) одговарати имену радне свеске.

Да би се приказао садржај ћелија именованог опсега, користићемо догађај Промени:

 Приватни Суб ЦомбоБок1_Цханге () 'Цомбобок департемент Избегните грешку насталу када корисник обрише садржај ЦомбоБок1 ако ЦомбоБок1.Валуе = "" Затим Екит Суб ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар ЦомбоБок2.Лист = Апплицатион.Транспосе (Ранге (НомРанге)) Енд Суб 

За трећи комбиновани оквир:

 Привате Суб ЦомбоБок2_Цханге () 'ЦомбоБок2.Валуе = "" Затим Екит Суб ЦомбоБок3.Цлеар ЦомбоБок3.Лист = Апплицатион.Транспосе (Ранге (НомРанге)) Енд Суб 

Уобичајене грешке

Неименовани опсег

Име унесено у ЦомбоБок не одговара ниједном називу радне књиге јер још није дефинисано. Да бисмо заобишли овај проблем, креират ћемо малу функцију. Његово

Улога је да прелистате сва имена радне свеске:

 Функција НомДефини (Ном ас Стринг) Као Боолеан Дим Номс као Име НомДефини = Фалсе за сваки Номс Ин ТхисВоркбоок.Намес Ако Номс.Наме = Ном онда НомДефини = Труе: Екит Функција Нект Номс Енд Фунцтион 

Инпут еррор

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

Ево примера:

 Функција ЦарацСпец (Ном ас Стринг) Као Стринг ЦарацСпец = Замени (Ном, "", "_") ЦарацСпец = Замени (ЦарацСпец, "-", "_") Крај функције 

Попуњени код

 Оптион Екплицит Привате Суб УсерФорм_Инитиализе () ЦомбоБок1.Цлеар ЦомбоБок1.Лист = Апплицатион.Транспосе (Ранге ("Деп")) ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар Енд Суб Приватни Суб ЦомбоБок1_Цханге () 'Цомбобок департемент Иф ЦомбоБок1.Валуе = "" Суб ЦомбоБок2.Цлеар ЦомбоБок3.Цлеар Дим НомРанге Ас Стринг НомРанге = ЦарацСпец (ЦомбоБок1.Валуе) Ако је НомДефини (НомРанге) Онда ЦомбоБок2.Лист = Апплицатион.Транспосе (Ранге (НомРанге)) Елсе ЦомбоБок2.АддИтем "" "Ауцуне цоммуне" "" Енд Иф Енд Суб Привате Суб ЦомбоБок2_Цханге () 'Комбиниране комуне Ако ЦомбоБок2.Валуе = "" Затим изадите Суб ЦомбоБок3.Цлеар Дим НомРанге Ас Стринг НомРанге = ЦарацСпец (ЦомбоБок2.Валуе) Ако НомДефини (НомРанге) Затим ЦомбоБок3.Лист = Апплицатион.Транспосе (Опсег (НомРанге)) Елсе ЦомбоБок3.АддИтем "" Ауцуне руе "" "Крај Ако заврши подфункција НомДефини (Ном као низ) Као логички Дим Номс као име НомДефини = Фалсе за сваки Номс Ин ТхисВоркбоок.Намес Иф Номс.Наме = Ном Затим НомДефини = Труе: Излаз Функција Нект Номс Енд Фунцтион Функција Царац Спец (Ном ас Стринг) Ас Стринг ЦарацСпец = Замените (Ном, "", "_") ЦарацСпец = Замените (ЦарацСпец, "-", "_") Енд Фунцтион 

Линк за скидање

Преузмите узорак на овом линку: //цјоинт.цом/?ДХхоотЦЛИВх
Претходни Чланак Sledeći Чланак

Топ Савети