Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70535 Skopiuj do schowka Tworzenie listy pozycji w ListBox w UserForm
Autor Wiadomość
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 28-03-2021, 14:12   Tworzenie listy pozycji w ListBox w UserForm

Szanowni Forumowicze,

Zwracam się do Was z gorącą prośbą o rozwiązanie następującej kwestii:

W Tabeli w arkuszu Excela zawarte są dane pracowników, na podstawie których tworzone są comiesięczne rachunki. Makro obsługujące arkusz podmienia określone łańcuchy znaków w szablonie rachunku odpowiednimi danymi pobieranymi z tabeli i tworzy rachunki, zapisując je w folderze "Rachunki bieżące".
W załączniku zamieszczam materiał poglądowy.

W obecnym rozwiązaniu po kliknięciu kontrolki "Utwórz" tworzone są rachunki dla wszystkich pozycji w tabeli.
Liczba pozycji w tabeli jest zmienna, bowiem sukcesywnie dopisywani do listy są nowi pracownicy.

Chciałbym rozbudować obecny układ o wykorzystanie UserForm przez możliwość przedstawienia listy pracowników (nazwisko i imię) z tabeli w ListBox z możliwością wielokrotnego wyboru.
W takim przypadku tworzone byłyby rachunki dla pracowników zaznaczonych w ListBox.

Samodzielnie nie potrafię napisać odpowiedniego makra, dlatego kieruje prośbę do Szanownych Forumowiczów o pomoc w rozwiązaniu przedstawionego zagadnienia.

Z góry serdecznie dziękuję za Wasze odpowiedzi.

Tworzenie Rachunków.rar
Pobierz Plik ściągnięto 12 raz(y) 145.62 KB

ID posta: 402858 Skopiuj do schowka
 
 
beret
ExcelGaduła 500+


Wersja: Win Office 2007
Pomógł: 13 razy
Posty: 784
Wysłany: 29-03-2021, 09:02   

Cytat:
W obecnym rozwiązaniu po kliknięciu kontrolki "Utwórz" tworzone są rachunki dla wszystkich pozycji w tabeli.
Ja bym to zrobił inaczej. Zamiast tworzyć rachunki w Wordzie, szablon rachunku zrobiłbym w Excelu i odpowiednio korzystał z niego przy wywoływaniu pracownika / pracowników.
ID posta: 402891 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 29-03-2021, 11:43   

Beret, dzięki za Twój wpis.

Czy mógłbyś bardziej szczegółowo przedstawić swoją koncepcję i zobrazować ją przykładem w arkuszu?
ID posta: 402900 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4543
Wysłany: 29-03-2021, 11:50   

O ile pamiętam to już zrobiłem dla Ciebie takie zadanie.
ID posta: 402903 Skopiuj do schowka
 
 
Tadek
Excel Expert


Wersja: Win Office 2007
Pomógł: 1984 razy
Posty: 5659
Wysłany: 29-03-2021, 14:34   

Wg propozycji Bereta (chyba się nie obrazi ;-) ).
Zobacz w załaczniku.

LISTA.xlsm
Pobierz Plik ściągnięto 13 raz(y) 29.75 KB

ID posta: 402914 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 29-03-2021, 17:12   

Apollo, tak, dobrze pamiętasz, w rozwiązaniu przedstawionym przez Ciebie wybór pozycji do utworzenia rachunku dokonywał się poprzez InputBox, a teraz chciałbym zaaplikować do tego celu ListBox w UserForm.

Tadku, bardzo dziękuję za przedstawienie rozwiązania. Prawdę mówiąc, nie mogę dociec, na jakiej zasadzie ono działa. Np., jak została utworzona lista wyboru, jak dokonują się podstawienia poszczególnych danych.
ID posta: 402926 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4543
Wysłany: 29-03-2021, 19:38   

Poczytaj to, co napisałem w arkuszu Arkusz3. Cały kod w Module1 i UserForm1.

Lista Obecności.xlsm
Pobierz Plik ściągnięto 15 raz(y) 42.95 KB

ID posta: 402932 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 29-03-2021, 22:34   

Apollo, przeogromne dzięki za przedstawione rozwiązanie. Odpowiada w pełni podanym założeniom. :-)

Teraz muszę się podjąć rozgryzienia kodu, który stworzyłeś, aby pojąć jego działanie.
ID posta: 402939 Skopiuj do schowka
 
 
Tadek
Excel Expert


Wersja: Win Office 2007
Pomógł: 1984 razy
Posty: 5659
Wysłany: 30-03-2021, 08:27   

Cytat:
Tadku, bardzo dziękuję za przedstawienie rozwiązania. Prawdę mówiąc, nie mogę dociec, na jakiej zasadzie ono działa. Np., jak została utworzona lista wyboru, jak dokonują się podstawienia poszczególnych danych.

Lista wyboru:
kliknij kolejno:
1) Formuły-->Menedżer nazw-->pracownik (tu jest utworzona lista pracowników)
2) Dane-->Poprawność danych-->Lista-->Źródło (lista wyboru)

Podstawianie danych:
dane są podstawiane za pomocą odpowiednich formuł - aby je zobaczyć odkryj kolumnę L.
ID posta: 402944 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 30-03-2021, 13:54   

Tadku, bardzo dziękuję z wskazówki i wyjaśnienia.
ID posta: 402959 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 30-03-2021, 15:58   

Apollo, jeszcze raz pięknie dziękuję za napisaną przez Ciebie aplikację. Cieszę się z niej niezmiernie.
Zacząłem właśnie analizować kody, które ułożyłeś, i w związku z tym chciałbym Cię uprzejmie prosić o wyjaśnienia w kwestiach, w których mam problemy z ich ogarnięciem.

1. W procedurze UserForm_Initialize() jest taki oto fragment:

Kod:

For r = 1 To UBound(dane)
        dane(r, 3) = r + 3  ' w 3-ciej dodanej kolumnie zapamiętać numer wiersza na arkuszu danej pozycji.
Next r
With ListBox1
       .ColumnCount = 2
       .MultiSelect = 1
       .List = dane
End With


Tablica dane() ma trzy kolumny, natomiast ListBox chyba dwie (ListBox1.ColumnCount = 2).
Czy to znaczy, że do ListBox zostają przypisane tylko dwie pierwsze kolumny tablicy dane() (ListBox1.List = dane), czy może że tylko dwie kolumny ListBox są wyswietlane (ListBox1.ColumnCount = 2)?

2. W procedurze CommandButton1_Click():

Kod:

If ListBox1.Selected(r) Then
            count = count + 1
            wiersze(count) = ListBox1.List(r, 2)    ' numer wiersza na arkuszu wybranej pozycji
End If


Jak indeksowana jest ListBox, od 0 czy od 1, bowiem zastanawia mnie czy ListBox1.List(r, 2) jest odwołaniem do drugiej, czy trzeciej kolumny? Wydaje mi się, że do trzeciej.

3. W procedurze UtwórzRachunek()":

zmieniłem na
Kod:

 Application.StatusBar = "Plik " & indeks


i niestety nie działa, nie wyświetla wartości indeks, czyli liczby kolejnego tworzonego rachunku.
Nie wiem, dlaczego.

Będę bardzo wdzięczny za wyjaśnienia, za które z góry pięknie dziękuję.
ID posta: 402975 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4543
Wysłany: 30-03-2021, 16:57   

Leon M napisał/a:

Tablica dane() ma trzy kolumny, natomiast ListBox chyba dwie (ListBox1.ColumnCount = 2).
Czy to znaczy, że do ListBox zostają przypisane tylko dwie pierwsze kolumny tablicy dane() (ListBox1.List = dane), czy może że tylko dwie kolumny ListBox są wyswietlane (ListBox1.ColumnCount = 2)?

1. Kwestia dostępności danych.
Ile kolumn ma tablica dane to tyle jest kolumn danych w ListBox. Te kolumny danych można potem odczytać z ListBox. W naszym przypadku są dostępne 3 kolumny danych w ListBox o indeksie 0, 1, 2.

2. Kwestia widoczności danych.
Tylko ColumnCount kolumn jest wyświetlonych. W nszym przypadku widzimy tylko 2 kolumny.

Czyli w naszym przypadku ListBox ma dane w 3 kolumnach, ale tylko 2 pierwsze są widoczne a 1 kolumna jest ukryta. Mimo, że kolumny są ukryte można odczytać z nich dane.
Cytat:

2. W procedurze CommandButton1_Click():
Jak indeksowana jest ListBox, od 0 czy od 1, bowiem zastanawia mnie czy ListBox1.List(r, 2) jest odwołaniem do drugiej, czy trzeciej kolumny? Wydaje mi się, że do trzeciej.

Wiersze i kolumny w ListBox są indeksowane od 0. Czyli pierwszy wiersz ma indeks = 0, kolumna trzecia ma indeks = 2.

Uwaga: w tablicy dane wiersze i kolumny są liczone od 1. Jeśli tablica tworzona jest w ten sposób:
dane = <Obszar na arkuszu>.Value, gdzie <obszar na arkuszu> zawiera conajmniej 2 komórki, to wiersze i kolumny tablicy dane zawsze są liczone od 1.
Cytat:

3. W procedurze UtwórzRachunek()":
zmieniłem na
Kod:

 Application.StatusBar = "Plik " & indeks



Pod linią Application.StatusBar ... dodaj DoEvents
ID posta: 402980 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 30-03-2021, 17:52   

Apollo, pięknie dziękuję za przedstawione wyjaśnienia, bardzo mi pomogły w ogarnianiu kodu.
ID posta: 402982 Skopiuj do schowka
 
 
Leon M 
Exceloholic


Wersja: Win Office 2010
Posty: 131
Wysłany: 30-03-2021, 20:29   

Apollo, chciałbym zwrócić się o pomoc jeszcze w następującej rzeczy. Otóż, chciałbym dodać jeszcze jeden element do Twojej aplikacji. Mianowicie, aby po wybraniu pozycji z ListBox i naciśnięciu przycisku "Utwórz rachunki" wyświetlał się komunikat o liczbie wybranych pozycji.
Czy można do tego celu wykorzystać formant Label? Jeśli można, to jak to wykonać?
Czy w oknie ListBox można zamieszczać tekst? Np. w górnej części "Wybierz pozycje z poniższej listy"

I jeszcze pytanie: czy można sprawić tak, aby po utworzeniu rachunków automatycznie zamykało się okno ListBox?

Z góry bardzo dziękuję za odpowiedź.
ID posta: 402988 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1317 razy
Posty: 4543
Wysłany: 31-03-2021, 02:52   

Leon M napisał/a:
Mianowicie, aby po wybraniu pozycji z ListBox i naciśnięciu przycisku "Utwórz rachunki" wyświetlał się komunikat o liczbie wybranych pozycji.
Czy można do tego celu wykorzystać formant Label?

Jeśli chcesz użyć Label to połóż gdzieś na Form Label1, i Label2 po jego prawej stronie. Ustaw Caption dla Label1 na "Liczba wybranych pozycji:", Caption dla Label2 na pusty. W Sub CommandButton1_Click po linii If count Then dodaj
Kod:

Label2.Caption = count

Cytat:

Czy w oknie ListBox można zamieszczać tekst? Np. w górnej części "Wybierz pozycje z poniższej listy"

Tuż nad ListBox połóż Label z Caption = "Wybierz pozycje z poniższej listy"
Cytat:

czy można sprawić tak, aby po utworzeniu rachunków automatycznie zamykało się okno ListBox?

Nie rozumiem. Zamykać ListBox? Co to takiego? Jeśli chcesz zamknąć Form to w Sub CommandButton1_Click przed linią End Sub dodaj
Kod:

Unload Me
ID posta: 402998 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe