Dla wielu list do wypełnienia trzeba po prostu 'rozmnożyć' zmienne takie jak 'wartosc2', nadać im właściwe dla nich nazwy oraz instrukcjami zliczającymi ilość niepustych wierszy w danej kolumnie (mniej 1 wiersz na nagłówek) wyliczyć im ilość wpisów do wstawienia na daną listę po czym przypisać je do właściwości ".List()" danej listy.
Instrukcje zliczające ilość niepustych komórek mają różną postać w zależności od upodobań stosujących je, u mnie jest to np.: funkcja arkuszowa "CountA()", czyli po polsku "ILE.NIEPUSTYCH()" w postaci:
"w = Application.CountA(ThisWorkbook.Sheets(ustawienia).Columns(1))"
czyli niepuste wiersze liczone po kolumnie "A" = Columns(1)
Inni wolą używać do tego 'czystej składni vba' w postaci:
w = ThisWorkbook.Sheets(ustawienia).Cells(Rows.Count, 1).End(xlUp).Row
lub
w = ThisWorkbook.Sheets(ustawienia).Range("a1").CurrentRegion.Rows.Count,
gdzie numer kolumny, w której liczy się niepuste komórki, to odpowiednio jedynka w "Cells(Rows.Count, 1)" i literka "a" w adresie Range("a1").
W opcji z "CurrentRegion.Rows" trzeba tylko uważać, aby były zachowane jednokolumnowe odstępy pomiędzy danymi do list, gdyż inaczej polecenie 'wybierze sobie do liczenia' kolumnę z największą ilością wpisów.
A potem to już tylko pętla ... ... ...:
Code: vbscript
Log in, to see the code
... i przypisanie zmiennej do .List() danej listy.
Wartość wyjściowa wypełnionej listy, ale z niewybranym wpisem na niej to:
UserForm1.ComboBox1.ListIndex = -1
Code: vbscript
Log in, to see the code
zaś, poniższe:
Code: vbscript
Log in, to see the code
to ustawienie tyczące się wyświetlania w rozwijanej liście dwóch kolumn z dannymi ".ColumnCount = 2", ze wskazaniem, że do arkusza mają być przepisywane dane z pierwszej kolumny ".TextColumn = 1", a ".ColumnWidths = "100;50", to odpowiednio szerokości danych kolumn w rozwijanej liście.
I tu mała komplikacja - w przypadku list 'jednokolumnowych', przepisywanie danych do arkusza jak w przesłanym przykładzie:
Code: vbscript
Log in, to see the code
, natomiast w przypadku list 'zasysających' dane z tablic wielowymiarowych, trzeba się już odwoływać do danych wpisów po indeksach, tj. jeśli do zmiennej przypisaliśmy dwie dane, np: nazwisko pracownika i jego identyfikator i tablica ta wygląda jak np: dane_pracownika(indeks1, indeks2), gdzie indeks1 to kolejne nazwiska, a indeks2 to identyfikatory i zmienna 'narastała' tak jak poniżej:
Code: vbscript
Log in, to see the code
to wtedy przepisywanie do arkusza wygląda tak:
Code: vbscript
Log in, to see the code
Jak sobie ustawimy inny sposób wypełniania tablicy, to wtedy trzeba poprzestawiać to i owo ...
... a jeśli coś tu pokręciłem i poprzekręcałem, to koledzy z forum na pewno poprawią ... żeby tylko za bardzo "od czci i wiary" nie odsądzili ....
Hej, potrzebuję zrobić kartotekę magazynową w excelu.
Zrobiłem wzór mniej więcej jak to ma wyglądać, ale nie potrafię wstawić do kodu vba funkcji przycisków.
Z góry dziękuję jeśli komuś będzie się chciało na to zerknąć i ewentualnie dać mi jakieś wskazówki Pozdrawiam !