Avatar billede display Nybegynder
22. marts 2010 - 11:02 Der er 2 kommentarer

Opslag i matrix med filtrering

Jeg har lavet en userform, hvor jeg med nogle bokse skal finde frem til en given råvare fra en materiale matrix.

Her vil jeg så gerne kunne benytte en filtrering lig 'filter' funktionen som findes i EXCEL. Jeg vælger udfra 3 input - f.eks.: Type, Farve og Tykkelse.

Eksempel - først vælger jeg råvare type (f.eks. 20 forsk.linjer), så vælger jeg farve (reducerer til f.eks. 5 linjer) og til sidst tykkelse (resulterer i den specifikke linje).

Min samlede matrix indeholder f.eks. 200 linjer. Men mit første felt skal kun indeholde en liste over kolonnen 'Type' i min matrix (f.eks. 10 forskellige muligheder). Mit næste felt skal så indeholde valgmulighederne i kolonnen 'Farve', men kun udfra de muligheder der i de 10 linjer. Mit sidste felt vil så vise mulighederne i kolonnen 'Tykkelse', som måske er 4 linjer.

Jeg håber at mit problem er beskrevet tydeligt nok, og ser frem til at høre fra et af oraklerne i dette forum :)
Avatar billede lerskov Praktikant
22. marts 2010 - 22:44 #1
ved ikke hvor meget du kender til vba, så det er ikke sikkert at dette giver mening.

man her vælger du først indhold i box 1 så 2, kun udvalg fra box 1 osv.

Dim mycol As New Collection
Private Sub ComboBox1_Change()

Dim list As Variant
list = Sheets("ark3").Range("a1").CurrentRegion
ComboBox2.Clear
ComboBox3.Clear
For x = 2 To UBound(list)
If ComboBox1 = list(x, 1) Then
Dim navn As String
navn = list(x, 2)
If kontrol(navn) Then
    ComboBox2.AddItem navn
End If
End If
Next x


End Sub
Private Sub ComboBox2_Change()

Dim list As Variant
list = Sheets("ark3").Range("a1").CurrentRegion
ComboBox3.Clear
For x = 2 To UBound(list)
If ComboBox2 = CStr(list(x, 2)) Then
Dim navn As String
navn = list(x, 3)
If kontrol(navn) Then
    ComboBox3.AddItem navn
End If
End If
Next x


End Sub

Private Sub UserForm_Initialize()
Dim list As Variant
list = Sheets("ark3").Range("a1").CurrentRegion

For x = 2 To UBound(list)
Dim navn As String
navn = list(x, 1)
If kontrol(navn) Then
    ComboBox1.AddItem navn
End If
Next x

End Sub

Function kontrol(navn As String) As Boolean
On Error GoTo fejl
navn = Trim(navn)
navn = StrConv(navn, vbProperCase)

mycol.Add navn, navn
kontrol = True
fejl:
If Err.Number <> 0 Then kontrol = False
End Function
Avatar billede display Nybegynder
23. marts 2010 - 10:36 #2
Jeg har kun lidt erfaring i VBA, så jeg forstår lidt af kodningen.
Men jeg får er fejl efter jeg har rettet noget af koden til.
Den er ikke tilfreds med "If kontrol(navn) Then"....

Skal jeg her definere hvilket navn den kan finde i listen?

Antal mulige valg er pt. som følger:
I ComboBox1 er der 15 forsk. valg (type = celle C8-C174); ComboBox2 er der 54 forsk. valg (farve = celle D8-D174) og ComboBox3 er der 14 forsk. valg (tykkelse = F8-F174).

Kan du ud fra dette hjælpe mig i den rigtige retning?
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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