28. februar 2015 - 08:52Der er
17 kommentarer og 1 løsning
Userform - hjæp til valg i lister
Jeg har to opgaver i en userform som jeg har brug for hjæp til.
a. er det muligt i en tekstbox, at lave et opslag i en liste, således at når jeg starter med at skrive navnet på et produkt, så udfylder den selv resten ud fra indholdet i en liste. Eks. i listen står der f.eks. tunfisk, når jeg så i tekstboxen skriver tun, så henter den selv resten efterhånden som der er et match i listen.
b. er det muligt når jeg har et match i textbox 1, at jeg så i en anden box kan vælge mellem den type af tunfisk der er. F.eks. tun i olie, tun i vand. Jeg forstiller mig en dropdown box med valgmulighederne. Disse valgmuligheder står ligeledes i en kolonne ved siden af produktlisten.
Jeg har et dataark med en kolonne der hedder produkt, og en der hedder produktyper.
Supertekst du må meget gerne byde ind med løsningsforslag.
Hej Natkatten Første del virker fint, men anden del er ikke som jeg har brug for. Jeg søger en løsning, hvor jeg f.eks. ved at vælge appelsiner i første tekstboks, skal kunne vælge mellem sure og søde i anden (bare et eks.). valget skal være i en dropdown boks, hvor første mulighed f.eks. sød er vist. Kan du indbygge det?
Har konstrueret en lille model, som indeholder 2 Combobokse og hvor produkt og tilhørende produktgrupper er anbragt i samme række.
Hvis du sender em mail returnere jeg filen. @-adresse under min profil.
Dim ræk As Integer, kol As Integer Dim antalRæk As Integer, antalKol As Integer Private Sub ComboBox1_Change() Dim ix As Integer Me.ComboBox2.Clear antalKol = ActiveCell.SpecialCells(xlLastCell).Column
ix = Me.ComboBox1.ListIndex
For kol = 2 To antalKol If Cells(ix + 1, kol) <> "" Then Me.ComboBox2.AddItem Cells(ix + 1, kol) End If Next kol End Sub Private Sub UserForm_activate() antalRæk = ActiveCell.SpecialCells(xlLastCell).Row For ræk = 1 To antalRæk Me.ComboBox1.AddItem Range("A" & ræk) Next ræk End Sub
Hej natkatten Funktionaliten er helt perfekt, jeg får dog en runtime error 32809, når data skal skrives tilbage til arket. Det sker I linjen: inrk = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row ' Offset(1, 0).Row
jeg kan ikke se nogen fejl I linjen. Virker den hos dig?
Hermed ikke sagt, at koden ikke kan forbedres (bl.a. med fejlkontrol), for det kan den naturligvis. Eksemplet er til inspiration og ikke en "færdiglavet" og gennemtestet løsning.
Sidste version: Option Explicit Dim ræk As Integer, kol As Integer Dim antalRæk As Integer, antalKol As Integer Private Sub ComboBox1_Change() Dim ix As Integer Me.ComboBox2.Clear antalKol = ActiveCell.SpecialCells(xlLastCell).Column
ix = Me.ComboBox1.ListIndex
If ix = -1 Then Exit Sub End If
For kol = 2 To antalKol If Cells(ix + 2, kol) <> "" Then Me.ComboBox2.AddItem Cells(ix + 2, kol) End If
If Me.ComboBox2.ListCount > 0 Then Me.ComboBox2.ListIndex = 0 End If Next kol End Sub Private Sub CommandButton1_Click() Dim antalRæk2 As Integer, ræk2 As Integer ActiveWorkbook.Sheets(2).Activate antalRæk2 = ActiveCell.SpecialCells(xlLastCell).Row If antalRæk2 = 1 Then antalRæk2 = 2 End If
For ræk2 = 2 To antalRæk2 + 1 If Range("A" & ræk2) = "" Then Range("A" & ræk2) = Me.ComboBox1 Range("B" & ræk2) = Me.ComboBox2 ActiveSheet.Columns.AutoFit
ActiveWorkbook.Save ActiveWorkbook.Sheets(1).Activate Me.ComboBox1 = "" Me.ComboBox1.SetFocus Exit Sub End If Next ræk2 End Sub Private Sub UserForm_activate() antalRæk = ActiveCell.SpecialCells(xlLastCell).Row For ræk = 2 To antalRæk Me.ComboBox1.AddItem Range("A" & ræk) Next ræk End Sub
Nu fungerer makroen i Excel 2013, men ikke i Excel 2007! Jeg foretager mig ikke yderligere, idet jeg kun har beholdt Excel 2007 for at lave forskellige tests mv. Jeg benytter den ikke i mit daglige arbejde.
Giv pointene til Supertekst og luk dermed spørgsmålet - jeg går ikke op i dette.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.