Listbox Titels geven

Status
Niet open voor verdere reacties.

mark1987vw

Gebruiker
Lid geworden
19 mei 2009
Berichten
96
Hallo allemaal,

Ik ben bezig met het vullen van een Listbox vanuit een tabel op basis van de datum.
Dit is gelukt.

Maar nu krijg ik het niet voor elkaar om de titels/Headers er boven te krijgen.
Ik gebruik de volgende code om de data in de listbox te krijgen:

Code:
Sub VulListbox()

Workbooks("TestListbox.xlsm").Activate

Dim id As String, i As Long, Flag As Boolean

    Sheets("Blad1").Select
    Flag = False
    i = 0
    id = Me.Datum.Caption
    Me.ListBox1.ColumnCount = 7
    Me.ListBox1.ColumnWidths = "40;100;20;20;20;20;20"
    Me.ListBox1.ColumnHeads = True
    Me.ListBox1.RowSource = Head
    
    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 2).Value = id Then
            Flag = True
                Me.ListBox1.AddItem
                Me.ListBox1.List(UBound(Me.ListBox1.List), 0) = Cells(i + 1, 1).Value
                Me.ListBox1.List(UBound(Me.ListBox1.List), 1) = Cells(i + 1, 2).Value
                Me.ListBox1.List(UBound(Me.ListBox1.List), 2) = Cells(i + 1, 3).Value
                Me.ListBox1.List(UBound(Me.ListBox1.List), 3) = Cells(i + 1, 4).Value
                Me.ListBox1.List(UBound(Me.ListBox1.List), 4) = Cells(i + 1, 5).Value
                Me.ListBox1.List(UBound(Me.ListBox1.List), 5) = Cells(i + 1, 6).Value
               
        End If

 i = i + 1

    Loop

End Sub

Ik heb dit geprobeerd met RowSource maar dit werkt niet.
De titels van de kolommen staan in Rij1 en die zou ik graag boven in de tabel willen hebben.
 

Bijlagen

  • TestListbox.xlsm
    22 KB · Weergaven: 21
Doe het eens zo:
Code:
Sub VulListbox()
    Workbooks("TestListbox.xlsm").Activate

    Sheets("Blad1").Select
    Me.ListBox1.ColumnCount = 6
    Me.ListBox1.ColumnWidths = "40;100;50;50;50;50;50"
    Me.ListBox1.ColumnHeads = True
    Me.ListBox1.RowSource = "A2:F6"
End Sub
 
Laatst bewerkt:
Bedankt voor je antwoord maar dit had ik ook al geprobeerd maar dan krijg ik deze melding:

Machtiging.JPG
 
Het is precies zoals het hoort en werkt hier prima in je eigen voorbeeld document.
Test dat dus voordat je het op een ander document toepast.
 
Laatst bewerkt:
Instellingen kan je beter in het ontwerp van het formulier doen. RowSource heeft nogal wat beperkingen maar binnen dit voorbeeld werkt het wel.

Code:
Private Sub UserForm_Initialize()
  Datum.Caption = Format(Now, "dddd d mmmm yyyy")
  ListBox1.RowSource = Sheets("blad1").Cells(1).CurrentRegion.Address
End Sub
 

Bijlagen

  • TestListbox.xlsm
    17,3 KB · Weergaven: 18
@Edmoor

Ik heb dit op mijn eigen document toegepast.
En hij geeft die foutmelding in het zelfde voorbeeld document.

Dit geldt ook voor het voorbeeld van VenA.
Het voorbeeld documentje dat je hebt meegestuurd heb je mijn 'filter' eruit gehaald waardoor die niet meer op de datum filtert.

Mogelijk zit dat het probleem ook daar in.

Ik heb hier 2 dezelfde bestanden, waarin ik in de ene het idee van Edmoor heb toegepast (TestListbox3.xlsm) en in het andere bestand (TestListbox2.xlsm) het idee van VenA.

In beide gevallen geeft het bestand bij mij bij het uitvoeren van het Userform de melding:

Fout 70 tijdens uitvoering: U hebt geen machtiging.
 

Bijlagen

  • TestListbox2.xlsm
    24,9 KB · Weergaven: 21
  • TestListbox3.xlsm
    25 KB · Weergaven: 20
In het voorbeeld dat ik plaatste wordt de procedure VulListbox niet gebruikt. Met de code van @edmoor zal je dezelfde fout wel gemaakt hebben.
 
Die TestListbox2 bevat niet mijn voorbeeld code.
Zo wel:
TestListbox2.PNG
 
Laatst bewerkt:
Maar in jouw voorbeeld geeft die niet de juiste uitkomst, zoals ik dat graag wil.

Ik wil dat de inhoud van de listbox alleen de rijen laat zien met de datum van vandaag.
In jou voorbeeld geeft die de gehele tabel weer maar dat wil ik niet.
 
De enige manier om listbox titels te krijgen is het opgeven van een range.
Daarbij wordt dan de regel boven de opgegeven range als header info gebruikt.
 
Oke en dat kan dus niet in combinatie met een filter op de Listbox.

Hebben je een idee hoe kan ik alleen de rijen laten zien die matchen met de datum vandaag én dat ik titels heb.
Want nu is het of geen titels of de gehele tabel.
 
Je kan de gewenste rijen naar een ander tabblad schrijven.
Dan die range gebruiken om de listbox te vullen en vervolgens dat tijdelijke tabblad weer te verwijderen.
Dat kan helemaal zonder dat de gebruiker er iets van ziet, anders dan een correct gevulde listbox.
 
Laatst bewerkt:
Maar even uitgewerkt.

Code:
Private Sub UserForm_Initialize()
  With Sheets("Blad1")
    .Cells(1, 13).Resize(2) = Application.Transpose(Array("Datum", Format(Date, "dddd dd mmmm yyyy")))
    .Cells(1).CurrentRegion.AdvancedFilter xlFilterCopy, Range("M1:M2"), Range("AA1")
    Datum.Caption = Format(Now, "dddd d mmmm yyyy")
    ListBox1.RowSource = .Cells(1, 27).CurrentRegion.Address
    .Cells(1, 13).CurrentRegion.Clear
  End With
End Sub

Al heb je er niets aan. Je kan beter .list gebruiken en even handmatig de kolomkoppen boven de listbox zetten.
 

Bijlagen

  • TestListbox.xlsm
    22,9 KB · Weergaven: 31
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan