Avatar billede jath08ac Forsker
13. januar 2016 - 13:58 Der er 1 kommentar

VBA kode - Combobox

Jeg er ikke så godt til VBA koder, men håber at I kan hjælpe mig 
Jeg har lavet en UserForm, hvor brugeren skal vælge to oplysninger på baggrund af information som fremgår af to ComboBox. Min udfordring er, at jeg gerne vil have, at når brugeren vælger en værdi i den første ComboBox, så skal værdierne i den anden ComboBox tilpasse sig. Jeg har forsøgt at lave et eksempel, som illustrere mit problem.

Excel filen består af to faner; Tracker og Oplysninger. I fanen Oplysninger, er der to kolonner, hvor der står en masse informationer i, som er dem der bliver vist i ComboBoxen.

Kolonne A: Står der en rækker forbrugsvare
Kolonne B: Fremgår hovedgrupperne til forbrugsvarerne

Det kunne f.eks. være sådan:
Kolonne A: (Informationer herfra vises i ComboBox2)
Tandpasta
Tandbørste
Vantpinde
Chips
Chokolade

Kolonne B: (informationer herfra vises i ComboBox1)
Personlig pleje
Personlig pleje
Personlig pleje
Slik
Slik

Jeg kunne godt tænke mig, at når man vælge f.eks. personlig pleje i ComboBox 1, så skal ComboBox2 kun vise de vare som vedr. personlig pleje, altså de første tre linjer under kolonne A.

Endvidere kunne jeg godt tænke mig, at Personlig pleje og Slik kun fremgår 1 gang under ComboBox1.

Håber at nogen kan hjælpe mig med denne lille opgave
Avatar billede Sitestory Mester
17. januar 2016 - 11:53 #1
Prøv at kopiere følgende til din userforms kode:

Option Explicit
Dim arIn()

Private Sub UserForm_Initialize()
Dim lCount As Long
Dim rRange As Range
Dim colGrupper As New Collection

'Antager at inputcellerne har tomme
'naboer i kolonne C og under nederste
'række.
Set rRange = Range("A1").CurrentRegion

'Kopierer ranget til arrayet
arIn = rRange.Value

On Error Resume Next

'Tilføjer varegrupper til vores collection.
'Ved også at tilføje som Key sikres, at
'hver gruppe kun optræder én gang.
'En key skal være af datatypen String.
For lCount = 1 To UBound(arIn)
  colGrupper.Add CStr(arIn(lCount, 2)), CStr(arIn(lCount, 2))
Next

On Error GoTo 0

'Fyld varegrupperne i ComboBox1
With ComboBox1
  For lCount = 1 To colGrupper.Count
      .AddItem colGrupper.Item(lCount)
  Next
End With

'Øverste vare skrives i tekstfeltet,
'og derved køres Sub ComboBox1_Change
ComboBox1.Text = arIn(1, 2)

Set rRange = Nothing
Set colGrupper = Nothing

End Sub

Private Sub ComboBox1_Change()
Dim lCount As Long

'Fyld varer i ComboBox2
With ComboBox2
  .Clear
  For lCount = 1 To UBound(arIn)
      If CStr(arIn(lCount, 2)) = ComboBox1.Text Then
        .AddItem CStr(arIn(lCount, 1))
      End If
  Next
End With

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester