Snoophy
01.02.13,15:22
Dobrý deň,

Pomohol by mi niekto s formulárom? Najlepšie v excell...
Potreboval by som spraviť formulár zo zoznamom rozbalovacím. Teda bude ponúkať výber.

Lenže keď vytvorím rozbalovací zoznam napríklad:

Pečivo
Chlieb

A niekto si vyberie že Chlieb, tak v ďalšom zozname bude mať na výber napríklad tmavý, alebo bledý.
Ak si vyberie Pečivo, tak bude mať na výber grahamové, alebo biele.

A bolo by dobré aby sa dalo vyberať aj tak, že po kliknutí na šipku sa zadá na klávesnici "gr" a v zozname skočí hneď na grahamový ( aby to nemusel listovať).

Ďakujem
Snoophy
04.02.13,07:20
Nikto nič?
zacinam_karieru
04.02.13,22:57
mozno by nebolo zle aj lahsie poriesit to v Access-i myslim ze aj konecny vysledok by bol lepsi...
sthruska
05.02.13,06:31
Priamo neporadím, ale budeš to musieť urobiť vo VBA.
Vyberieš položku v prvom ComboBox-e. V udalosti onClick zavoláš funkciu pomocou ktorej potom naplníš zoznam v druhom ComboBox-e.
PaloPa
07.02.13,06:31
Dobrý deň,

... A niekto si vyberie že Chlieb, tak v ďalšom zozname bude mať na výber napríklad tmavý, alebo bledý.
Ak si vyberie Pečivo, tak bude mať na výber grahamové, alebo biele. ...
Ďakujem

Už to tu bolo riešené, link smeruje na príspevok kde je to riešené pre autá,
stačí urobiť analogickú úpravu.
http://www.porada.sk/t173558-rolovacie-menu-s-podmienkami.html#post1811159

Ak to má byť s ComboBox-om a makrom, to je riešené tu:
http://www.porada.sk/t177126-combobox.html#post1856375

Príspevkov na prácu s rozbaľovacím zoznamom na všetky spôsoby je tu tiež X. Stačí do hľadania zadať ComboBox.

Palo
PushCar
07.02.13,13:13
Dobrý deň


1. stačí si vložiť do excelu svoje údaje s tým, že v prvom stĺpci budú názvy produktov
2. v riadkoch budú ich rôzne typy
3. Makro automaticky zadá tieto riadky do názvov oblastí aj s ošetrením keby náhodou obsahovali medzeru (ostatné nepovolené znaky si musíte už sami ošetriť inak sa zasekne pri definovaní názvov)
4. Môžte aktualizovať a pridávať rôzne druhy a pri znovunačítaní formulára sa automaticky načítajú aj nové aktualizované údaje vďaka offset
-----------------------------------------
Private Sub cboProdukt_Change()
Dim rngTyp As Range
Dim MojaOblast As Variant
Dim PoslRiad As Integer
Dim ws As Worksheet
Dim strProdukt As String
Dim strOut As Variant
Set ws = Worksheets("ZOZNAMY")

PoslRiad = ws.Range("A" & Rows.Count).End(xlUp).Row
MojaOblast = ws.Range("A1:A" & PoslRiad)
strProdukt = cboProdukt.Value

For lngLoop = 1 To Len(cboProdukt.Value)
If Mid(cboProdukt.Value, lngLoop, 1) <> " " Then
strOut = strOut & Mid(cboProdukt.Value, lngLoop, 1)
End If

Next
Dim i As Integer


For i = 1 To cboTyp.ListCount


cboTyp.RemoveItem 0


Next i
For Each rngTyp In ws.Range(strOut)
Me.cboTyp.AddItem rngTyp.Value
Next rngTyp

End Sub


Private Sub UserForm_Initialize()


Dim rngProdukt As Range
Dim ws As Worksheet
Dim MojaOblast As Variant
Dim PoslRiad As Integer
Dim lngLoop As Long
Dim strOut As Variant

Set ws = Worksheets("ZOZNAMY")

PoslRiad = ws.Range("A" & Rows.Count).End(xlUp).Row
MojaOblast = ws.Range("A1:A" & PoslRiad)
'nazov oblasti bude prvy udaj z docasnej premennej MojaOblast
ActiveWorkbook.Names.Add Name:=MojaOblast(1, 1), RefersToR1C1:= _
"=OFFSET(ZOZNAMY!R2C1, 0, 0, COUNTA(ZOZNAMY!C1)-1,1)"


For i = 2 To PoslRiad

For lngLoop = 1 To Len(MojaOblast(i, 1))
If Mid(MojaOblast(i, 1), lngLoop, 1) <> " " Then
strOut = strOut & Mid(MojaOblast(i, 1), lngLoop, 1)
End If

Next
On Error GoTo osetrujuca_metoda
ActiveWorkbook.Names.Add Name:=strOut, RefersToR1C1:= _
"=OFFSET(ZOZNAMY!R" & i & ", 0, 1, 1, COUNTA(ZOZNAMY!R" & i & ")-1)"
strOut = ""

Next

For Each rngProdukt In ws.Range(MojaOblast(1, 1))
Me.cboProdukt.AddItem rngProdukt.Value
Next rngProdukt


osetrujuca_metoda:
If Err.Number = 1004 Then
MsgBox ("produkt " & MojaOblast(i, 1) & " obsahuje nepovolené znaky! Dodržujte pravidlá syntaxe pre názvy vo vzorcoch")
Else
MsgBox ("Nastala chyba")
End If


End Sub
------------------------
PaloPa
07.02.13,13:38
Pekné riešenie.

Ešte jedna drobnosť (doplniť do kódu), aby pri volaní formu nehodilo chybu:

Next rngProdukt
Exit Sub

osetrujuca_metoda:

P.