Excel: tworzenie formularza z polem kombi

Formularz w Excelu z polem kombi pozwala użytkownikowi wybierać wartości z predefiniowanej listy zamiast wpisywać je ręcznie. Dzięki temu można ograniczyć liczbę literówek, ujednolicić sposób wprowadzania danych i przyspieszyć pracę z arkuszem.

W Excelu pole kombi można utworzyć jako kontrolkę formularza, formant ActiveX albo element formularza UserForm VBA. Kontrolka formularza jest prostsza w konfiguracji, natomiast formant ActiveX i UserForm zapewniają większą elastyczność oraz możliwość programowania reakcji na zdarzenia.

Dlaczego warto używać pola kombi w formularzu

Pole kombi to obiekt, który łączy pole tekstowe z polem listy i tworzy listę rozwijaną. W danej chwili wyświetla tylko jedną pozycję, a użytkownik może wybrać wartość z przygotowanego zestawu.

Pole kombi pozwala użytkownikom wybierać opcje z predefiniowanej listy, co ułatwia i usprawnia wprowadzanie danych. Odpowiednio zdefiniowane pozwala na przypisanie do pola konkretnego elementu z listy, a tym samym zabezpiecza przed błędami przy wpisywaniu, literówkami itp.

Programowe tworzenie kontrolek formularzy umożliwia łatwe tworzenie interaktywnych arkuszy kalkulacyjnych. Implementując wewnątrz formularz do wprowadzania nowych zleceń, zyskałem nie tylko standardowy zestaw danych, ale również: ograniczenie liczby pomyłek, skrócenie czasu wprowadzania zleceń, wzrost komfortu pracy i co bardzo istotne - znacząco obniżenie czasochłonności szkolenia nowych osób z prowadzenia pliku.

Trzy sposoby tworzenia listy wyboru

Lista rozwijana w komórce za pomocą poprawności danych

Listę rozwijaną w Excelu możesz wykorzystać na wiele sposobów. Od stworzenia formularza, po interaktywne wykresy.

Najprostszym i często wykorzystywanym sposobem na listę rozwijaną, jest wykorzystanie funkcjonalności - poprawność danych. Lista rozwiana jest gotowa. Klikając w komórkę z listą, będziesz mógł zobaczyć wszystkie wcześnie wpisane miasta.

  1. Przygotuj listę wartości w dowolnym zakresie w arkuszu.
  2. Zaznacz komórkę, w której ma powstać lista rozwijana.
  3. Przejdź na wstążkę DANE i wybierz POPRAWNOŚĆ DANYCH.
  4. W zakładce USTAWIENIA wybierz z listy rozwijanej LISTĘ.
  5. W polu ŹRÓDŁO kliknij ikonę z komórkami i zaznacz zakres z przygotowanymi wartościami.
  6. Po zaznaczeniu zakresu ponownie kliknij ikonę z komórkami, aby powrócić do menu USTAWIENIA.
  7. Kliknij przycisk OK.

Jeżeli wiesz jak nadawać NAZWY - w tym miejscu zamiast wskazywać zakres - możesz podać wcześniej zdefiniowaną nazwę. Wybrana wartość, zawsze pojawia się w komórce, w której stworzysz daną listę.

Pole kombi jako kontrolka formularza

Drugim sposobem na listę jest wykorzystanie kontrolki formularza. W ramach kontrolek, możesz używać takich jak: przycisk, pasek przewijania, pole wyboru (tzw. checkbox) i właśnie lista, która tu nazywa się pole kombi.

Jeśli chcesz wyświetlić listę wartości, z których użytkownicy mogą wybierać, dodaj pole listy do arkusza. Dodawanie pola kombi do arkusza pozwala ułatwić wprowadzanie danych, pozwalając użytkownikom na wybieranie wartości z pola kombi.

  1. Kliknij przycisk Wstaw na karcie DEWELOPER.
  2. W obszarze Kontrolki formularza kliknij pozycję Pole kombi.
  3. Kliknij komórkę, w której chcesz dodać pole kombi, a następnie przeciągnij, aby je narysować.
  4. Kliknij prawym przyciskiem myszy pole kombi i wybierz polecenie Formatuj formant.
  5. Na karcie FORMANT ustaw zakres wejściowy i łącze komórki.
  6. Określ liczbę wierszy wyświetlanych po rozwinięciu listy.
  7. Kliknij przycisk OK.

Jeśli karta Deweloper nie jest widoczna, kliknij pozycję Opcje pliku - Dostosowywanie Wstążki. Na liście Karty główne zaznacz pole wyboru Deweloper, a następnie kliknij przycisk OK.

Pole kombi jako formant ActiveX

Ostatni sposób na listę z opcjami do wyboru to tzw. pole kombi (formant ActiveX). Do pewnego momentu postępujesz analogicznie, jak przy kontrolce formularza: klikasz kartę DEWELOPER, wybierasz WSTAW i z sekcji FORMANTY ACTIVEX wybierasz POLE KOMBI.

Podobnie jak wcześniej rysujesz oczekiwany kształt listy w wybranym przez Ciebie miejscu arkusza. W tym miejscu zaczynają się różnice.

  1. Włącz TRYB PROJEKTOWANIA na karcie DEWELOPER.
  2. W sekcji Kontrolki ActiveX wybierz Pole kombi.
  3. Narysuj kontrolkę w wybranym miejscu arkusza.
  4. Kliknij prawym przyciskiem myszy formant i wybierz WŁAŚCIWOŚCI.
  5. Ustaw właściwości ListFillRange i LinkedCell.
  6. Zamknij okno właściwości i wyłącz TRYB PROJEKTOWANIA.

Klikając w formant, nie możesz jeszcze używać listy. Jesteś w tzw. trybie projektowania i aby to zmienić, musisz odkliknąć ikonę TRYB PROJEKTOWANIA na wstążce DEWELOPER.

W pasku formuły pojawił się dziwny zapis: =OSADŹ(„Forms.ComboBox.1″;””). Zapis Forms.ComboBox.1 sugeruje, że masz do czynienia z kodem VBA.

W przypadku kontrolki ActiveX, po wybraniu jakieś pozycji z listy, pojawi się ona bezpośrednio w komórce połączonej (LinkedCell), a nie jako wartość reprezentująca jej pozycję na liście (jak w przypadku kontrolki formularza).

Kontrolka formularza a ActiveX

CechaKontrolka formularzaFormant ActiveX
KonfiguracjaProstsza konfiguracja za pomocą okna Formatuj formant.Konfiguracja za pomocą okna Właściwości.
Źródło listyZakres wejściowy.ListFillRange.
Połączona komórkaMoże zawierać liczbę reprezentującą pozycję elementu na liście.Może zawierać bezpośrednio wybraną wartość.
ProgramowanieDo każdej kontrolki możesz przypisać makro.Pozwala na oprogramowanie jej przez kod VBA.
ElastycznośćOdpowiednia dla prostych formularzy.Zapewnia większą elastyczność.

Kontrolka formularza daje Ci co najmniej dwie nowe możliwości. Po pierwsze do każdej kontrolki możesz przypisać makro. Po drugie po wybraniu wartości z listy, w połączonej komórce nie pojawia się ta wartość tylko liczba reprezentująca pozycję tej wartości na liście.

Najbardziej złożona opcja to ta z kontrolką ActiveX. Pozwala na oprogramowanie jej przez kod VBA. To daje Ci najwięcej możliwości i zapewnia największą elastyczność.

Jeśli należy utworzyć pole kombi umożliwiające użytkownikom edytowanie tekstu w polu tekstowym, warto rozważyć użycie pola kombi kontrolki ActiveX. Pole kombi kontrolki ActiveX jest bardziej uniwersalne, ponieważ pozwala zmienić właściwości czcionki, aby tekst był bardziej czytelny w powiększonym arkuszu, oraz za pomocą programowania sprawić, że będzie ona widoczna w komórkach zawierających listę sprawdzania poprawności danych.

Tworzenie formularza UserForm VBA

Jedną z najlepszych metod zapewnienia powtarzalności i systematyki prowadzenia plików Excel są tzw. formularze użytkownika, które są częścią Edytora VBA.

Formularze użytkownika wstawia się z poziomu edytora VBA w oknie listy projektów. W edytorze VBA w oknie projektu kliknij prawym przyciskiem myszy w dowolnym miejscu. Wybierz pozycję Insert - User Form.

Dodawanie kontrolek do formularza

Kontrolki formularza to nic innego jak pola umieszczane na formularzu. W naszym przykładzie będziesz potrzebować poniższych kontrolek:

Kontrolki umieszczamy na formularzu metodą przeciągnij i upuść. Umieść po jednej kontrolce z każdego rodzaju, który potrzebujesz, a każde kolejne będziesz mógł kopiować razem z formatowaniem.

Rozmiar formularza i układ kontrolek nie ma większego znaczenia. Zachęcam Cię jednak do dopilnowania logicznego układu pól i ogólnej czytelności.

  • Zostaw odpowiednie odstępy między kontrolkami.
  • Zadbaj o odpowiedni rozmiar pól.
  • Poukładaj je intuicyjnie, czyli analogicznie do ich kolejności w tabeli docelowej.
  • Umieść po jednej kontrolce z wyżej wymienionych, oprócz Spinbutton’a, na formularzu.

Wysokość i szerokość formularza możesz zmieniać wewnątrz okna właściwości lub po prostu rozciągając go jak zdjęcie wstawione do dokumentu Word.

Formatowanie formularza i kontrolek

Ogromną część właściwości powtarza się niezależnie od typu kontrolki, więc formatowanie będzie szybkim i prostym zabiegiem.

Czcionka i wielkość tekstu

  1. Użyj skrótu Ctrl + A lub zaznacz wszystkie pola za pomocą myszki.
  2. Z okna właściwości wybierz opcję Font i użyj przycisku opcji, który pojawi się po prawej stronie.
  3. Zwiększ czcionkę do rozmiaru 14 i potwierdź wybór przyciskiem OK.

Okno, które masz przed oczami powinno być Ci znane. Jest to takie samo okno formatowania czcionki jak to wewnątrz arkusza kalkulacyjnego.

Kolor formularza i kontrolek

  1. Kliknij gdziekolwiek w pustą przestrzeń formularza, aby zaznaczyć go jako aktywny i wybierz kolor tła używając pozycji Back color z okna właściwości.
  2. Przytrzymując Ctrl, zaznacz następujące kontrolki: OptionButton, CheckBox i etykietę.
  3. Z okna Właściwości wybierz opcję BackStyle i z listy rozwijanej pozycję nr 0 - fmBackStyleTransparent.

Jeżeli użyjesz prawego przycisku myszy, na jednym z pól w dwóch ostatnich rzędach, będziesz mógł wybrać dowolny kolor z palety RGB.

Tagowanie kontrolek

Znaczniki to opcje kontrolek, które znacznie ułatwiają programistyczną część przygotowania formularza. Możemy nadać kilku polom ten sam znacznik i w ten sposób stworzyć grupy pól.

Pozwoli to edytować wszystkie obiekty danej grupy tym samym fragmentem kodu, czyli przyspieszy naszą pracę nad tworzeniem formularza.

Zaznacz pole tekstowe oraz pole kombi i w oknie Właściwości odnajdź pozycję Tag. Następnie wpisz w to pole „1”. Pozwoli nam to później szybko zaimplementować mechanizm sprawdzania kompletności danych.

Powielanie i rozmieszczanie kontrolek

  1. Stosuj skrót Ctrl + a do zaznaczania wszystkich kontrolek wewnątrz formularza.
  2. Przytrzymuj Ctrl, aby zaznaczyć różne kontroli.
  3. Przytrzymuj Shift, aby zaznaczyć wszystkie kontrolki pomiędzy pierwszą kontrolką, którą wybrałeś, a drugą.
  4. Pamiętaj, że możesz wybierać wszystkie kontrolki na danym obszarze, używając przeciągania myszy.
  5. Możesz edytować precyzyjnie położenie kontrolek używając właściwości Top i Left.
  6. Używaj opcji wyrównaj do.
  7. Zaznacz kilka kontrolek, a następnie z paska narzędzi wybierz opcję wyrównaj.

Zmniejszenie wartość Left przesunie kontrolkę w lewo, natomiast zwiększenie w prawo. Zmniejszenie wartość Top przesunie kontrolkę w górę, natomiast zwiększenie w dół.

Ważna jest tu kolejność wyboru i sposób w jaki zaznaczasz kontrolki.

Zmiana rozmiaru i tekstu kontrolek

Zaznacz kontrolkę z przyciskiem opcji i dwukrotnie kliknij na prawym dolnym kwadracie zaznaczenia. Rozmiar kontrolki zostanie automatycznie dostosowany do wypełnienia.

Przyciski i pola tekstowe możesz rozszerzać i zmniejszać tak jak formularz - oknem właściwości lub chwytając i przeciągając kwadraty na granicy zaznaczenia.

Etykiety, przyciski opcji, checkboxy oraz przyciski akcji mają właściwość Caption. Zmiana tej właściwości spowoduje zmianę tekstu wyświetlanego na formularzu.

Samo główne okno formularza również ma taką właściwość. Możesz również edytować tekst kontrolki bezpośrednio na formularzu.

Wartość domyślna

W opisywanym przypadku, zamówienie najczęściej dotyczy pojedynczego samochodu. Jeżeli pozostawisz w polu ilość domyślnie liczbę 1, zwiększysz komfort pracy i przyspieszysz nieco wprowadzanie danych.

Aby to zrobić zaznacz pole ilość i znajdź wpis Value w oknie Właściwości. Wprowadź w nie liczbę 1.

Nazewnictwo kontrolek

Jedną z najważniejszych czynności w projektowaniu formularzy jest właściwe nazewnictwo obiektów. Mam tu namyśli wewnętrzne nazwy, po których będziesz odnosić się do konkretnych pól, programując wszystkie mechanizmy.

Wewnętrzna nazwa to pierwsze pole w oknie właściwości obiektu oznaczone w nawiasach - (Name). Wartość tego pola nie może zawierać: samych liczb, znaków specjalnych oraz spacji.

Jeżeli potrzebujesz nazwy dwuczłonowej, zamiast spacji użyj tzw. podłogi - „_”. Nazwa powinna odnosić się w sposób jasny do wartości, jaka będzie przechowywana w danym polu np.: jeżeli nadajesz nazwę polu, w którym będziesz wprowadzał datę, niech brzmi ona po prostu „data”.

Jeśli wprowadzisz nieintuicyjne oznaczenia, będzie Ci dużo trudniej programować formularz.

Przygotowanie źródła danych dla pola kombi

W polach kombi będą znajdować się listy wybierane. Aby zadziałały musimy przygotować odpowiednie zestawy danych wewnątrz arkusza pomocniczego.

Formularz będzie zaciągał stamtąd dane, a użytkownicy będą mogli w prosty sposób, bez konieczności zmiany kodu, je edytować.

Najlepiej jest to zrobić stosując sformatowane tabele. Odpowiednie nazewnictwo tych tabel jest równie ważne, ponieważ umożliwi nam tworzenie precyzyjnych i odpornych, na zmiany struktury arkuszy, mechanizmów.

Odpowiednie przygotowanie danych kluczem do sukcesu formularza. Wszystkie nazwy tabel oraz pól formularza będziesz mógł zobaczyć wewnątrz przygotowanego przeze mnie pliku.

Formularz z dwoma polami kombi i zależną listą

Przykładowy formularz może zawierać dwa pola kombi. Pierwsze pole ma umożliwić wybór przedstawiciela z bazy danych, a drugie pole ma zawężać listę podmiotów przypisanych do wybranego przedstawiciela.

Po wyborze przedstawiciela z jednego pola w drugim zawęża się lista podmiotów przypisanych do niego. Po wyborze podmiotu wartość z kolumny F może być wyświetlana w polu tekstowym.

Jeżeli wyświetli mi się ta wartość w tym "polu tekstowym" - mogę ją edytować -> tak aby baza danych się zaktualizowała.

Pole kombi to istotny i często stosowany element formularza. Poprzez pole kombi można także włączyć/przełączyć filtr i wyświetlić wybrane dane.

Przykładowa struktura danych

ElementŹródłoZastosowanie
Pierwsze pole kombiKolumna AWybór przedstawiciela
Drugie pole kombiKolumna BLista podmiotów przypisanych do przedstawiciela
Pole tekstoweKolumna FWyświetlanie i edycja planu rocznego

W takim rozwiązaniu po zmianie wartości w pierwszym polu należy odświeżyć zawartość drugiego pola. Po wyborze podmiotu formularz powinien odczytać odpowiedni rekord i wyświetlić wartość w polu tekstowym.

Dodawanie pola kombi do UserForm

W pierwszym wpisie stworzyłem formularz użytkownika, który zawierał wyłącznie pole tekstowe do wprowadzania nazwy firmy, oraz przyciski Wstaw i Anuluj. Przyszła pora na dodanie nowego pola tzw. ComboBox’a.

Z wielu dostępnych w UserForm formantów znajduje się ComboBox, z którego użytkownik może wybrać wartość. Dodałem listę rozwijaną, oraz etykietę do formularza, a także zwiększyłem wielkość czcionki do 18.

Nadałem też nazwę temu elementowi cbxKraj. Jeśli nie wiesz jak to zrobić, to przejdź do pierwszego wpisu UserForm - własny formularz w Excelu.

Źródło danych przez RowSource

Teraz przyszła pora na przypisanie źródła danych tej listy i mogę zastosować tutaj dwie metody. Jedna z nich to wprowadzenie do komórek Excela listy i odwołanie się do niej w polu RowSource własności ComboBox’a.

Dzięki zastosowaniu tabeli, po dodaniu nowej pozycji lista będzie się aktualizować.

Źródło danych przez tablicę VBA

Inną metodą jest zastosowanie tablicy wartości, która w momencie uruchomienia formularza zostanie załadowana do ComboBox’a.

Będąc w kodzie UserForm’a z listy po lewej stronie wybieram UserForm, a z prawej strony zdarzenie Initialize. Initialize to zdarzenie, które towarzyszy uruchomieniu formularza.

W procedurze tego zdarzenia należy odwołać się do nazwy obiektu, i za pomocą funkcji Array podać elementy tablicy.

Jeśli nie usunę teraz nazwy tabeli z własności RowSource, to przy próbie uruchomienia formularza nastąpi konflikt. Usuwam więc przed pierwszym uruchomieniem nazwę tabeli z tego pola.

Programowanie pola kombi w VBA

Formularz i wszystkie jego kontrolki mają zestaw zdarzeń, pod które można zaprogramować mechanizmy w języku VBA. Zdarzeniem może być np.: zmiana wartości w polu, kliknięcie w pole danych, czy uruchomienie formularza.

Poszczególne zdarzenia można wybierać z poziomu okna kodu w edytorze VBA. Aby przejść do okna kodu, kliknij dwukrotnie w puste pole na formularzu.

Inne zdarzenia możemy wybierać z listy znajdującej się w prawym górnym rogu okna kodu. Lista po lewej stronie służy do wyboru obiektu formularza.

Ładowanie elementów do pola kombi

Pola kombi programujemy w następujący sposób: Przechodzimy do Edytora VisualBasic i wybieramy z lewej strony obiekt „Ten skoroszyt” lub w zależności od wersji Excela „This Workbook”.

W oknie Code ustawiamy Obiekt „Workbook” i wyzwalacz „Open”. Dzięki temu wartości w polach kombi załadują się nam przy każdorazowym otwieraniu skoroszytu.

By wprowadzić wartości w listę pola kombi, odnosimy się do odpowiedniego arkusza, oraz pola kombi w następujący sposób Nazwa_arkusza.Nazwa_pola_kombi „Wartość , która powinna pojawić się w polu”.

Private Sub Workbook_Open() Arkusz1.ComboBox1.AddItem "dolnośląskie" Arkusz1.ComboBox1.AddItem "kujawsko-pomorskie" Arkusz1.ComboBox1.AddItem "lubelskie"End Sub

W taki sposób wprowadzamy w kolejnych liniach kodu wszystkie nasze wartości np województwa. W naszym przypadku nazwą pola kombi będzie ComboBox1.

Ważne jest, by po każdorazowej edycji wartości w polu kombi zapisać, zamknąć i ponownie otworzyć plik Excela.

Użycie klauzuli With

Jeśli wartości jest dużo, powinniśmy skorzystać z klauzuli With. Odnosimy się w ten sposób do pola kombi i arkusza tylko raz i zaoszczędzamy czas na pisanie naszego kodu.

Private Sub Workbook_Open() With Arkusz1.ComboBox1 .AddItem "dolnośląskie" .AddItem "kujawsko-pomorskie" .AddItem "lubelskie" .AddItem "lubuskie" .AddItem "łódzkie" .AddItem "małopolskie" .AddItem "mazowieckie" .AddItem "opolskie" .AddItem "podkarpackie" .AddItem "podlaskie" .AddItem "pomorskie" .AddItem "śląskie" .AddItem "świętokrzyskie" .AddItem "warmińsko-mazurskie" .AddItem "wielkopolskie" .AddItem "zachodniopomorskie" End WithEnd Sub

Kod wprowadzony w powyższy sposób powinniśmy zamknąć przy użyciu wyrażenia End With.

Użycie pętli For…Next

W tym momencie możemy już korzystać z funkcjonalności pola Kombi. Jeśli chcemy zaprogramować kolejne pola odpowiadające kolejno za dzień, miesiąc i rok urodzenia, najłatwiej będzie skorzystać z pętli For…Next.

With Arkusz1.ComboBox2 Dim intLicznikBox2 As Integer For intLicznikBox2 = 1 To 31 .AddItem intLicznikBox2 NextEnd With

Wyświetlanie dni tygodnia w formie liczb od 1 do 31 jest oczywiście uproszczeniem, gdyż nie każdy miesiąc posiada tyle dni. Możemy zaprogramować kod naszej aplikacji w taki sposób, by wyeliminować takie przypadki.

Użycie pętli While…Wend

By dokończyć wypełnianie wartości w polach kombi 3 i 4 analogicznie programujemy kod odpowiedzialny za miesiąc i rok. Dla odmiany zastosujmy także pętlę While. Wend do utworzenia wartości w naszych polach.

With Arkusz1.ComboBox3 Dim intLicznikBox3 As Integer intLicznikBox3 = 1 While intLicznikBox3 <= 12 .AddItem intLicznikBox3 intLicznikBox3 = intLicznikBox3 + 1 WendEnd With
With Arkusz1.ComboBox4 Dim intLicznikBox4 As Integer For intLicznikBox4 = 1980 To 2000 .AddItem intLicznikBox4 NextEnd With

Wprowadzanie wartości z pola kombi do arkusza

By wprowadzić dane z naszych pól kombi do tabeli powinniśmy w kodzie obiektu Arkusz1 wprowadzić odniesienie do elementów ComboBox kolejno 1,2,3,4.

W przypadku pól odpowiedzialnych za dzień, miesiąc, rok powinniśmy skorzystać z funkcji DateSerial(), by utworzyć datę z naszych elementów.

Private Sub CommandButton1_Click() Dim sngId As Single Dim sngWiersz As Single Dim sngLoginLicznik As Single 'WYBIERANIE OSTATNIEGO NIEZAPISANEGO WIERSZA I NADAWANIE ID sngId = 1 + Application.WorksheetFunction.Max(Range("A:A")) sngWiersz = 6 + Application.WorksheetFunction.CountA(Range("A:A")) 'SPRAWDZANIE LOGINU sngLoginLicznik = 7 Do While sngLoginLicznik <= sngWiersz If Cells(sngLoginLicznik, 2) = LCase(TextBox1) Then MsgBox "Ten login znajduje się już w bazie, wprowadź inny", vbCritical GoTo endlabel End If sngLoginLicznik = sngLoginLicznik + 1 Loop 'WPROWADZANIE DANYCH Cells(sngWiersz, 1) = sngId Cells(sngWiersz, 2) = LCase(TextBox1) Cells(sngWiersz, 3) = UCase(Left(TextBox2, 1)) & LCase(Mid(TextBox2, 2)) Cells(sngWiersz, 4) = StrConv(TextBox3, vbProperCase) Cells(sngWiersz, 5) = LCase(TextBox4) Cells(sngWiersz, 6) = ComboBox1 Cells(sngWiersz, 7) = DateSerial(ComboBox4, ComboBox3, ComboBox2)endlabel:End Sub

Walidacja danych w formularzu

W aktualnej formie UserForm pozwala na to, aby użytkownik nie uzupełnił pól danymi, co może spowodować wprowadzenie pustego rekordu.

Aby zabezpieczyć formularz przed taką sytuacją można wyłączyć przycisk Wstaw do czasu, aż oba pola zostaną uzupełnione.

Za działanie przycisku odpowiedzialna jest własność Enabled, która przyjmując wartość False, powoduje, że nie da się go użyć. Dlatego też w pierwszym kroku wyłączę przycisk w momencie uruchomienia się formularza.

Teraz pora na wykorzystanie zdarzeń TextBox’a, oraz ComboBox’a. Z listy po lewej stronie pola kodu formularza wybieram tbNazwa i pojawia się domyślny event Change.

Wprowadzam warunek, który sprawdza, czy oba pola nie są puste. Taki sam warunek dodaję dla zdarzenia Change listy rozwijanej.

Teraz przycisk Wstaw nie będzie aktywny, aż do momentu uzupełnienia obu pól.

Łączenie pola kombi z komórką

Dzięki właściwości LinkedCell komórka arkusza, do której odwołuję się pole kombi wyświetla wybraną pozycję.

W przypadku kontrolki formularza pole kombi można połączyć z komórką, w której jest wyświetlany numer elementu po wybraniu elementu z listy. Wpisz numer komórki, w której ma być wyświetlany numer elementu.

Na przykład komórka C1 wyświetli numer 3, gdy zostanie wybrany element Sorbet, ponieważ jest to trzeci element naszej listy.

Możesz użyć funkcji INDEKS, aby pokazać nazwę elementu zamiast numeru. W naszym przykładzie pole kombi jest połączone z komórką B1, a zakres komórek dla listy to A1:A2.

Jeśli w komórce C1 wpisano następującą formułę: =INDEKS(A1:A5;B1), po wybraniu elementu „Sorbet” będzie on wyświetlany w komórce C1.

Ustawianie zakresu listy i liczby wierszy

W polu Zakres wejściowy wpisz zakres komórek zawierających listę wartości. W polu Łącze komórki wpisz odwołanie do komórki.

Wybrana komórka będzie zawierać liczbę skojarzoną z elementem wybranym w polu listy, a używając tej liczby w formule, można uzyskać rzeczywisty element z zakresu wejściowego.

Linie rozwijane: liczba wierszy, które mają być wyświetlane po kliknięciu strzałki w dół. Jeśli na przykład lista zawiera 10 elementów i nie chcesz jej przewijać, możesz zmienić domyślną liczbę na 10.

Jeśli wpiszesz liczbę mniejszą niż liczba elementów na liście, zostanie wyświetlony pasek przewijania.

Automatyczne utworzenie pola kombi za pomocą Aspose.Cells dla .NET

Dzięki Aspose.Cells dla .NET możesz programowo tworzyć pola kombi w arkuszach programu Excel bez bezpośredniego korzystania z programu Excel.

Ta potężna biblioteka umożliwia programistom manipulowanie plikami programu Excel na różne sposoby, w tym automatyzację kontrolek formularza.

Wymagania wstępne

  • Aspose.Cells dla .NET.
  • .NET Framework.
  • Środowisko programistyczne, takie jak Visual Studio.
  • Licencja Aspose.

Upewnij się, że masz zainstalowany .NET Framework na swoim komputerze. Każda wersja obsługiwana przez Aspose.Cells będzie działać.

Możesz pracować bez licencji w trybie ewaluacyjnym, ale w przypadku pełnej wersji musisz zastosować licencję.

Importowanie przestrzeni nazw

Aby rozpocząć, musisz zaimportować wymagane przestrzenie nazw do swojego projektu.

using System.IO;using Aspose.Cells;

Są one niezbędne do interakcji z plikami programu Excel i manipulowania elementami formularzy, takimi jak pola kombi w skoroszycie.

Konfigurowanie katalogu dokumentów

Pierwszym krokiem jest utworzenie katalogu, w którym zostaną zapisane pliki Excela. Możesz utworzyć nowy folder, jeśli jeszcze nie istnieje.

string dataDir = "Your Document Directory";bool IsExists = System.IO.Directory.Exists(dataDir);if (!IsExists) System.IO.Directory.CreateDirectory(dataDir);

dataDir: Określa lokalizację, w której zostanie zapisany plik wyjściowy. System.IO.Directory.Exists: sprawdza, czy katalog już istnieje. System.IO.Directory.CreateDirectory: Tworzy katalog, jeśli go brakuje.

Tworzenie skoroszytu i pobieranie arkusza

Teraz utwórz nowy skoroszyt w programie Excel, do którego chcesz dodać pole kombi.

Workbook workbook = new Workbook();

Skoroszyt skoroszyt: Inicjuje nowe wystąpienie klasy Skoroszyt, reprezentujące plik programu Excel.

Następnie przejdź do pierwszego arkusza kalkulacyjnego w skoroszycie i pobierz zbiór komórek, do którego chcesz wprowadzić dane.

Worksheet sheet = workbook.Worksheets[0];Cells cells = sheet.Cells;

Arkusz kalkulacyjny: Pobiera pierwszy arkusz kalkulacyjny ze skoroszytu. Komórki komórki: Pobiera zbiór komórek z arkusza kalkulacyjnego.

Wprowadzanie wartości źródłowych

Teraz musimy wprowadzić pewne wartości do komórek. Te wartości będą służyć jako opcje dla pola kombi.

cells["B3"].PutValue("Employee:");cells["B3"].GetStyle().Font.IsBold = true;cells["A2"].PutValue("Emp001");cells["A3"].PutValue("Emp002");cells["A4"].PutValue("Emp003");cells["A5"].PutValue("Emp004");cells["A6"].PutValue("Emp005");cells["A7"].PutValue("Emp006");

Umieszcza etykietę “Pracownik” w komórce B3. Ustawia tekst na pogrubiony, aby się wyróżniał. Wprowadź kilka identyfikatorów pracowników w komórkach A2 do A7.

Zostaną one wyświetlone na liście rozwijanej pola kombi.

Dodawanie pola kombi

Następnym krokiem jest dodanie kontrolki pola kombi do arkusza kalkulacyjnego. To pole kombi pozwoli użytkownikom wybrać jeden z identyfikatorów pracowników, które wprowadziłeś wcześniej.

Aspose.Cells.Drawing.ComboBox comboBox = sheet.Shapes.AddComboBox(2, 0, 2, 0, 22, 100);

AddComboBox: Dodaje nowe pole kombi do arkusza kalkulacyjnego. Liczby (2, 0, 2, 0, 22, 100) oznaczają pozycję i wymiary pola kombi.

Łączenie pola kombi z komórką i zakresem

Aby pole kombi działało, musimy powiązać je z konkretną komórką i zdefiniować zakres komórek, z których będzie pobierać opcje.

comboBox.LinkedCell = "A1";comboBox.InputRange = "A2:A7";

LinkedCell: Łączy wybór pola kombi z komórką A1. Wybrana wartość z pola kombi pojawi się w tej komórce.

InputRange: Definiuje zakres komórek (A2:A7) zawierający wartości, które zostaną umieszczone w opcjach pola kombi.

Dostosowanie wyglądu

Możesz dodatkowo dostosować pole kombi, określając liczbę linii rozwijanych i włączając cieniowanie 3D w celu uzyskania lepszego efektu estetycznego.

comboBox.DropDownLines = 5;comboBox.Shadow = true;

DropDownLines: Określa, ile opcji będzie jednocześnie widocznych na liście rozwijanej pola kombi. Cień: Dodaje efekt cieniowania 3D do pola kombi.

Dopasowanie kolumn i zapis pliku

Na koniec dopasujmy automatycznie kolumny, aby uzyskać przejrzysty układ, i zapiszmy skoroszyt.

sheet.AutoFitColumns();workbook.Save(dataDir + "book1.out.xls");

AutoFitColumns: automatycznie dostosowuje szerokość kolumn do zawartości. Zapisz: Zapisuje skoroszyt jako plik programu Excel w określonym katalogu.

Najważniejsze właściwości pola kombi

Pole kombi to obiekt, ma więc swój arkusz właściwości, a w kodzie VBA - metody i właściwości. Można tu ustawić wszystkie parametry pola, zdefiniować go graficznie.

  • Źródło wierszy - kolumna lub kolumny tabeli/kwerendy będąca źródłem wierszy widocznych po rozwinięciu pola kombi.
  • Liczba kolumn - w polu kombi może być wyświetlanych kilka kolumn każdego rekordu źródła danych.
  • Kolumna związana - jeżeli liczba kolumn jest większa od 1, do dalszego zapisania/wykorzystania może być przekazana wartość tylko jednej z nich.
  • LinkedCell - komórka powiązana z wyborem.
  • InputRange - zakres wejściowy dla kontrolki formularza.
  • ListFillRange - zakres wypełnienia listy dla formantu ActiveX.
  • ListRows - liczba elementów wyświetlanych na liście.

Tu wpisujemy numer kolumny związanej. No i oczywiście cała lista zdarzeń związanych z polem kombi: To już jednak temat na zupełnie oddzielna notki.

Formularz Excel z polem kombi

Excel - lista rozwijana - jak ją dodać do arkusza - porada #35

Dodawanie pola kombi do arkuszy kalkulacyjnych programu Excel przy użyciu Aspose.Cells dla .NET to prosty proces, który znacznie zwiększa elastyczność wprowadzania danych.

tags: #excel #tworzenie #formularza #pole #kombi