• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Combobox Rowsource probleem

Status
Niet open voor verdere reacties.

Samsung6713

Gebruiker
Lid geworden
24 dec 2019
Berichten
209
Goedeavond,

ik heb in een userform de rowsource als volgt
Code:
Private Sub UserForm_Initialize()

...
Me.ComboBoxklant.RowSource = "klant!A2:A" & targetrow
Me.ComboBoxartikel.RowSource = "Artikelen!A2:A" & targetrow1
...
End Sub

Dit geeft problemen als ik een ander excelbestand heb open staan.
Hoe refereer ik naar het huidige excelbestand in de rowsource?
 
Mooi die halve codes en geen bestand. Dus maar gokken? Gebruik geen rowsource. Maar .list
 
Ik denk niet dat de rest van de code meer duidelijk maakt.

Code:
Private Sub UserForm_Initialize()

Dim targetrow As Integer
targetrow = ThisWorkbook.Worksheets("hulptabblad").Range("C12").Value

Dim targetrow1 As Integer
targetrow1 = ThisWorkbook.Worksheets("hulptabblad").Range("C18").Value

Me.ComboBoxklant.RowSource = "klant!A2:A" & targetrow
Me.ComboBoxartikel.RowSource = "Artikelen!A2:A" & targetrow1
Dim sngLeft As Single
Dim sngTop As Single

    Call ReturnPosition_CenterScreen(Me.Height, Me.Width, sngLeft, sngTop)
    Me.Left = sngLeft
    Me.Top = sngTop
End Sub
 
Waar heb je het hulptabblad voor nodig dan en wat staat erin?
 
Ik gebruik het hulptabblad om de laatste rij in een tabel te vinden, en die als range te kunnen gebruiken.
 
Dat lijk mij vrij nutteloos. Maar goed zonder bestand kijk ik er verder niet naar.
 
Het originele bestand post ik hier liever niet.

De enige manier die ik ken om de laatste gevulde rij te vinden in een tabel is via somproduct.
Heb dat op een hulp tabblad staan waar nog meer van dat soort dingen staan.

Met het .list en google kom ik er vast wel weer.

Bedankt!
 
Een "echte" tabel?
Code:
With ActiveSheet.ListObjects("TabelNaam")
    Set LaatsteCel = .ListRows(.Listrows.Count).Range.Cells(1, 1)
End With
De laatst gevulde cel in kolom A:
Code:
With ActiveSheet
    Set LaatsteCel = .Range("A" & .Rows.Count).End(xlUp).Offset(1)
End With
 
Maar om de gegevens in je listbox te zetten gebruik je voor een "Echte" tabel (aan te bevelen!!!!):
Code:
Listbox1.List = Worksheets("Bladnaam").ListObjects(Tabelnaam").ListColumns("Kolomnaam").DataBodyRange.Value
(alle namen aanpassen aan jouw situatie)
 
Mijn methode is:
Code:
 With ActiveSheet.ListObjects("TabelNaam")
    Set LaatsteCel = .databodyrange(.Listrows.Count,1)
 End With
 
Goedemorgen,

beide codes om de laatste gevulde cel te vinden werken niet.
Hiermee word alleen de onderste cel van de tabel geselecteerd.
Waarschijnlijk omdat er ook formules in de tabel staan vermoed ik.
 
Een tabel hoort geen lege cellen te hebben, de laatste rij van een tabel behoort ook de laatste rij met gegevens te zijn. Er is geen enkele reden om tabellen "alvast" groter te maken dan je gegevens verwacht, een tabel groeit namelijk automatisch mee met je data en de formules die naar de tabel verwijzen ook. Dat is nou net het grote voordeel van de tabel in Excel.
 
@JkPieterse, gegevens ophalen met een formule vanuit de tabel gaat niet altijd automatisch. Soms is het wel nodig om wat meerdere rijen op voorhand te hebben toegevoegd. Ik kwam het toevallig vandaag nog tegen met het ophalen van unieke gegevens vanuit een een tabel. De matrixformule dient in ieder geval verder doorgevoerd te worden.

In dat geval zou je ervoor kiezen om de cellen niet op te maken als tabel
 
Laatst bewerkt:
@JVeer: Hmm, zonder de opzet kan ik hier niet veel over zeggen.

@Samsung6713: Juist dan!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan