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: 192 Skopiuj do schowka Problem z przypisaniem danych do formularza
Autor Wiadomość
chips 
Exceloholic


Posty: 249
Wysłany: 30-01-2007, 16:53   

Mam nadzieję, że masz jeszcze cierpliwość. Kolejna prośba dotyczy również list.
1. Chciałbym by po wybraniu jakiejś pozycji na liście pierwszej w liście drugiej wyświetlała się pozycja określona w makrze (załączyłem przykład). Da się to równie prosto zrobić?
2. Chciałbym aby w liście wyświetlała się tylko jedna pozycja (czyli nie tak jak w moim przykładzie). Czy da się to zrobić inaczej niż tylko zmianą rozmiaru listy?

2_listy_zależne.zip
Pobierz Plik ściągnięto 688 raz(y) 9.42 KB

_________________
Pozdrawiam. CHIPS
ID posta: 2009 Skopiuj do schowka
 
 
chips 
Exceloholic


Posty: 249
Wysłany: 30-01-2007, 17:12   

Tajan napisał/a:
chips napisał/a:

2. Staram się aby formularz był możliwie przejrzysty i wymyśliłem żeby tą transpozycję na pion przenieść do drugiego arkusza i wówczas ListFillRange pobierał by dane z drugiego arkusza. Mam nadzieję że się da.


Nie ma problemu. Do adresu dodajesz tylko nazwę arkusza, np.: Arkusz2!A1:A10


Wstawilem do ListFillRange: Arkusz2!A1:A10. Ale nie chce przyjąć. Pewnie coś trzeba dodać lub ujać :-/
_________________
Pozdrawiam. CHIPS
ID posta: 2012 Skopiuj do schowka
 
 
Trebor 
Excel Expert


Pomógł: 1752 razy
Posty: 4680
Wysłany: 30-01-2007, 17:26   

chips napisał/a:
Wstawilem do ListFillRange: Arkusz2!A1:A10. Ale nie chce przyjąć. Pewnie coś trzeba dodać lub ujać


Powinno być dobrze pod warunkiem, że arkusz o nazwie Arkusz2 istnieje.
W Twoim przykładzie był system
_________________
Trebbor@wp.pl
ID posta: 2017 Skopiuj do schowka
 
 
Trebor 
Excel Expert


Pomógł: 1752 razy
Posty: 4680
Wysłany: 30-01-2007, 17:31   

chips napisał/a:
2. Chciałbym aby w liście wyświetlała się tylko jedna pozycja (czyli nie tak jak w moim przykładzie). Czy da się to zrobić inaczej niż tylko zmianą rozmiaru listy?


Usuń we właściwościach Listboxa2 listfillrange.
Dla wprawy potestuj takie makro
Kod:

Private Sub ListBox1_Click()
If ListBox2.ListCount >= 0 Then ListBox2.Clear
ListBox2.AddItem Cells(ListBox1.ListIndex + 1, 4)
End Sub
_________________
Trebbor@wp.pl
ID posta: 2019 Skopiuj do schowka
 
 
chips 
Exceloholic


Posty: 249
Wysłany: 30-01-2007, 17:55   

Wszystko działa. Dzięki Trebor. Ale jeszcze mam zgryz z tym:
1.
Cytat:
2. Chciałbym aby w liście wyświetlała się tylko jedna pozycja (czyli nie tak jak w moim przykładzie). Czy da się to zrobić inaczej niż tylko zmianą rozmiaru listy?

Tu chodzi mi o listę nr 1.

2.Czy wielkością czcionki w liście można sterować?

PS. To nie mój wątek forum więc nie mogę dodawać wam punktów za pomoc
_________________
Pozdrawiam. CHIPS
ID posta: 2022 Skopiuj do schowka
 
 
chips 
Exceloholic


Posty: 249
Wysłany: 30-01-2007, 19:26   

Umiem zmieniać kod który podał Trebor jeżeli dane będą w tym samym arkuszu. Ale jak zmienić ten kod jeżeli dane do obydwu tych list będą w innym arkuszu (arkusz2) - załączyłem plik.
Kod:
Private Sub ListBox1_Click()
If ListBox2.ListCount >= 0 Then ListBox2.Clear
ListBox2.AddItem Cells(ListBox1.ListIndex + 1, 4)
End Sub

Sorry. że nadwerężam waszą cierpliwość ale formularz, który dzięki waszej pomocy staram się stworzyć jest dość karkołomny.

2_listy_zależne(2).zip
Pobierz Plik ściągnięto 689 raz(y) 10.08 KB

_________________
Pozdrawiam. CHIPS
ID posta: 2025 Skopiuj do schowka
 
 
Trebor 
Excel Expert


Pomógł: 1752 razy
Posty: 4680
Wysłany: 30-01-2007, 20:02   

Sprawdź taki kod
Kod:

Private Sub ListBox1_Click()
ListBox2.Clear
ListBox2.AddItem Sheets("Arkusz2").Cells(ListBox1.ListIndex + 1, 4)
End Sub


Pamiętaj, że lista dla listboxa jest indeksowana od 0 tj. pierwszy wiersz jest 0. Podobnie kolumna.
Czcionkę można zmienić dla całego formantu. Nie znam sposobu na zmianę wilkości czcionki dla jednego wiersza spośród innych.

Pozdrawiam
_________________
Trebbor@wp.pl
ID posta: 2027 Skopiuj do schowka
 
 
Tajan


Pomógł: 5618 razy
Posty: 12152
Wysłany: 30-01-2007, 21:52   

chips, zapytam, tak z ciekawości, po co Ci kontrolka listy w drugiej kolumnie, skoro chcesz wyświetlić jedną wartość? Możesz ją przecież wyprowadzić w komórce B1, bez potrzeby używania kontrolki. Zresztą, i makro nie jest tu potrzebne.
Ustaw właściwość "LinkedCell" pierwszego Listbox'a na komórkę A1, a do komórki B1 wpisz formułe:
Kod:
=JEŻELI(A1="";"";INDEKS(Arkusz2!D1:D8;PODAJ.POZYCJĘ(A1;Arkusz2!C1:C8;0)))

A jezeli już koniecznie ma być kontrolka w kolumnie B, to możesz jej użyć, ustawiając jej "ListFillRange" na komórkę B1, zawierającą powyższą formułę. Efekt będzie taki sam, jak z makrem :-)
ID posta: 2030 Skopiuj do schowka
 
 
chips 
Exceloholic


Posty: 249
Wysłany: 31-01-2007, 11:38   

Trebor. Dzięki. Twoje makro działa dla 2 list jeżeli tablica jest w innym arkuszu. Potrzebuję jeszcze ten kod zmodyfikować (spójrz niżej).

Tajan. Dzięki za odpowiedź. Faktycznie trochę błądzę szukając efektywnego rozwiązania. Teraz faktycznie widzę, że dwie listy zależne od siebie to nie najlepszy kierunek. Niemniej nie mogę drugiej listy zastapić komórką z formułą którą podałeś dlatego, że w rzeczywistości dane w tej drugiej liście są to dane tekstowe o znacznej wielkości (kilka zdań).

Bazując na wiadomościach do tej pory od Was otrzymanych wydaje mi się, że najlepszym rozwiązaniem była by lista (ListBox1) oraz pole tekstowe (TextBox1) (zalezne od siebie jak wczesniej). Tylko nie potrafię zmienić kodu by to działało. Możecie pomóc?

Kod:
Private Sub ListBox1_Click()
ListBox2.Clear
ListBox2.AddItem Sheets("Arkusz2").Cells(ListBox1.ListIndex + 1, 4)
End Sub
_________________
Pozdrawiam. CHIPS
ID posta: 2036 Skopiuj do schowka
 
 
Tajan


Pomógł: 5618 razy
Posty: 12152
Wysłany: 31-01-2007, 12:05   

Rozwiązanie z TexBox'em już bardziej do mnie przemawia :-)
Zmień kod w następujący sposób:
Kod:

Private Sub ListBox1_Click()
TextBox1.Value= Sheets("Arkusz2").Cells(ListBox1.ListIndex + 1, 4).Value
End Sub
ID posta: 2037 Skopiuj do schowka
 
 
chips 
Exceloholic


Posty: 249
Wysłany: 31-01-2007, 12:35   

Dzięki. Działa. Mam nadzieję, że koncepcja mi się nie zmieni. :mrgreen:
_________________
Pozdrawiam. CHIPS
ID posta: 2039 Skopiuj do schowka
 
 
chips 
Exceloholic


Posty: 249
Wysłany: 09-02-2007, 09:10   

Witam, Jeżeli potrzebuję to makro zastosować dla wiekszej ilości listboxów to czy jest możliwość jednej procedury z np. pętlą, czy też muszę utworzyć tyle procedur ile listboxów?
Kod:
Private Sub ListBox2_Click()
TrescCheckList1.Value = Sheets("System2").Cells(ListBox2.ListIndex + 12, 2).Value
End Sub
_________________
Pozdrawiam. CHIPS
ID posta: 2365 Skopiuj do schowka
 
 
Tajan


Pomógł: 5618 razy
Posty: 12152
Wysłany: 09-02-2007, 10:29   

Pętlą się nie da. Wprawdzie istnieje pewien sposób polegający na napisaniu własnej klasy, ale w Twoim przypadku radziłbym jednak zastosować oddzielna procedurę dla każdej kontrolki.
ID posta: 2370 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.wip.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