[ neptuncokg @ 27.12.2009. 13:28 ] @
Rešio sam da se obračunam sa svim problemima vezanim za UserForm i vezu sa excelom. Dakle:
ComboBox(cmb1) vuče podatke iz Sheeta "BAZA" (A2:A6). To su nazivi - imena i prezimena. Klikom na ime iz padajuće liste cmb1 - u txt1 i txt2 se upisuju podaci iz kolona "B" i "C" - telefon i mesto. Kao vlookup u excelu. Problem je sledeći: Ako se u kolini NAZIV (pa samim tim i u cmb1) nađu dva, tri i više ISTIH imena (npr. dva Petra Petrovića), koji imaju različite telefone i različita mesta i različite pozicije u listi, u txt1 i txt2 se upisuju podaci - telefon i mesto SAMO PRVOG nađenog naziva. I to bez obzira što se klikne na drugi ili treći naziv-duplikat. Evo procedure koja to reguliše:

Private Sub cmb1_Click()
Dim qx As Variant
qx = cmb1.Text
On Error GoTo errHandle
txt1.Text = Sheets("baza").Range("A1").Offset(Application.WorksheetFunction.Match(qx, Sheets("baza").Range("A2:A200"), 0), 1)
txt2.Text = Sheets("baza").Range("A1").Offset(Application.WorksheetFunction.Match(qx, Sheets("baza").Range("A2:A200"), 0), 2)
Exit Sub
errHandle:
txt1.Value = ""
txt2.Value = ""
End Sub

Svakako treba da se izmeni, ili dopiše, ali šta? U prilogu je kompletan primer. Hvala unapred i pozdrav svim ljubiteljima excela i VBA.
[ Jpeca @ 28.12.2009. 22:20 ] @
Match funkcija nalazi prvo pojavljivanje zadatog teksta u nizu i zato ti se dešava kao što si opisao.

Rešenje je veoma jednostavno uz drugačije korišćenje combo boxa

Combo box možeš popuniti sa sve tri kolone. U svojstvima ComboBoxa
1/ U svojstvu Row Source navedi opseg A1:C6 umesto A1:A6
2/ Column Count stavi 3
3/ Column Width stavi neke pogodne širine za sve prikaz tri kolone u padajućoj listi npr. 90 pt;20 pt;40 pt
4/ Bound column ostaje 1 to je vrednost koju uzima Combo box

Sada kad izabereš neku od vrednosti iz Combo boxa lako možeš preuzeti i vrednosti iz ostalih kolona
Me.cmb1.Column(1) - daje odgovrajuću vrednost iz druge kolone (B1:B6)
Me.cmb1.Column(2) - daje odgovarajuću vrednost iz treće kolone (C1:C6)

Na taj način ne samo da rešavaš problem nego i je korisniku jasnije šta je izabrao iz padajuće liste - ovako kad ima dve iste vrednosti bez dodatnih informacije malo je konfuzno.
[ neptuncokg @ 29.12.2009. 00:20 ] @
Zaista šteta što ranije nisam postavio ovo pitanje. Silno vreme sam izgubio deklarišući promenljive i praveći vezu cmb-baza, baza-txt, i tako u krug - sve sa offset i match-om. Znao sam za opciju više kolona u comboboxu, i koristio sam to, ali zaobilazno, preko pomoćnih txt-ova koja sam vezivao samo za column(3) gde sam stavljao redni broj, kao "link" polje. Ispred nosa mi je bila ova "direktna veza" cmb-txt, ali je jednostavno nisam video. Sad me čeka prerada jedno desetak procedura na "isti kalup". Taman ću da uvežbam, za kaznu... H v a l a ! Pozdrav.
[ Ivek33 @ 29.12.2009. 18:33 ] @
Citat:
neptuncokg:Silno vreme sam izgubio deklarišući promenljive i praveći vezu cmb-baza, baza-txt, i tako u krug - sve sa offset i match-om. Znao sam za opciju više kolona u comboboxu, i koristio sam to
Pitam se onda, zašto ići sa upotrebom Form i VBA ?
Negdje na forumu sam pročitao da treba izbjeći VBA koliko se god može
I meni se čini jednostavniji ComboBox kako si krenuo a i u mom attachu ( uz sortiranje imena ).
Osim ako mora biti Form pa je rješenje od @Jpece pravo rješenje





pozdrav
[ neptuncokg @ 29.12.2009. 22:58 ] @
Ne treba biti izričit u odluci - forma ili ne. Upravo sam ja citirao na forumu instruktora sa "Praktikuma" u delu - "... gde god možeš da izbegneš VBA, ti ga izbegni". Naravno da to ne treba shvatiti bukvalno. Jeste jednostavnije uraditi nešto u excelu, nego u VBA (ako je moguće), ali vizuelni efekat, ozbiljnost, pa često i mogućnosti su svakako na strani forme. Uostalom, naš "excel nasušni" je ipak program za rad sa tabelama. To što ga neki od nas (i sebe tu ubrajam) koriste i za druge stvari (rad sa bazama, objektno programiranje i sl.), ja bih pripisao nedostatku znanja iz drugih programa (Acces, C#, Java...). Dobro, ne mislim da svi treba da budemo pravi programeri, ali često dođem u situaciju da me isprave kad kažem "...Programiranje u excelu". Oni baš zlobni to zovu - tabeliranje. Kad je reč o mom slučaju, na žalost, osim excela i VBA nemam nikakva programerska iskustva (ne računajući malo DOS-a i CLIPPER-a). A kako stoje stvari, mislim da će tako i ostati. I na kraju, ako moram da izaberem, - COMBOBOX u formi, ili na sheetu ? Pa, i jedno i drugo, ali forma ipak ima one privlačne plavo-belo-sive (neodoljive) kontraste. Hvala na odgovoru. Pozdrav.