30. juli 2015 - 18:01
Der er
1 løsning
VBA Userforms - Vis liste
Hej,
Jeg er ude efter at at vise og redigere indholdet af en kolonne i en listbox. Kolonnen der skal vises i listbox'en er dynamisk og afhængig af en combobox.
Derfor:
I Sheet1 har jeg i første række overskrifter som vises i ComboBox1.
A1 = Overskrift1
B1 = Overskrift2
C1 = Overskrift3
...osv. Disse er mit opslag i ComboBox1.
Nedenfor hver overskrift har jeg flere rækker data som kan variere i antal.
F.eks:
B1 = Overskrift2
B2 = Data
B3 = Data
B4 = Data
... osv
Når jeg i ComboBox1 vælger f.eks. Tekst2, vil jeg have ListBox1 til at vise indholdet i denne kolonne, altså B2:B100 (eller "uendeligt"). Min ComBobox skal derfor være bestemmende for hvilken kolonne i arket der skal vises i listboxen.
Dernæst vil jeg kunne redigere i det viste indhold og overskrive data i den valgte kolonne vha. CommandButton1.
Håber det giver mening, og håber meget at nogen kan hjælpe.
Mvh
Simon
Rem Anbringes under relevante ark.
Rem Hvis du vil have hele filen - så send en mail. @-adresse under min profil
Dim cc As Object, sidsteKol As Integer, sidsteRække As Integer
Dim kol As Integer, ræk As Integer
Private Sub ComboBox1_Change()
kol = Me.ComboBox1.ListIndex + 1
Me.ListBox1.Clear
Me.TextBox1 = ""
For Each cc In Range(Cells(2, kol), Cells(sidsteRække, kol)).Cells
If cc <> "" Then
Me.ListBox1.AddItem cc
Else
Exit For
End If
Next cc
End Sub
Private Sub CommandButton1_Click() 'overskriv
Cells(ræk, kol) = Me.TextBox1
End Sub
Private Sub ListBox1_Click()
ræk = Me.ListBox1.ListIndex + 2
Me.TextBox1 = Cells(ræk, kol)
End Sub
Private Sub UserForm_activate()
sidsteRække = ActiveCell.SpecialCells(xlLastCell).Row
sidsteKol = ActiveCell.SpecialCells(xlLastCell).Column
For Each cc In Range(Cells(1, 1), Cells(1, sidsteKol)).Cells
If cc <> "" Then
Me.ComboBox1.AddItem cc
Else
Exit For
End If
Next cc
Me.ComboBox1.DropDown
End Sub