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
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.
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
... 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
------------------------
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.
Ešte jedna drobnosť (doplniť do kódu), aby pri volaní formu nehodilo chybu:
Next rngProdukt
Exit Sub
osetrujuca_metoda:
P.