Dynamische gegevens validatie laat ook de lege cellen zien

Status
Niet open voor verdere reacties.

Koos Voos

Gebruiker
Lid geworden
11 apr 2008
Berichten
87
Om een dynamische data validatie toe te passen in VBA, eerder de vraag gesteld hoe dit op te lossen in dit topic: http://www.helpmij.nl/forum/showthr...e-gegevens-validatie-amp-VBA-(Excel-Userform).

Dit werkt (te) perfect....:eek:

Als ik in mijn userform op mijn listbox / combobox klik, is mijn list veeeeeeel langer geworden. Onderaan de lijst staan nu ook "alle" lege cellen. (zo ongeveer de gehele kolom)

Enig idee hoe ik dit op kan lossen, ik heb tot op heden nog geen oplossing gevonden.

Bij voorbaat dank,
Koos
 
Code:
Private Sub UserForm_Initialize()
    With Sheets("Blad1")
        sq = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
        ComboBox1.List = sq
    End With
End Sub
 
Hoi Warme bakkertje,

Ik heb de code werkend gekregen, maar het maakt geen verschil. :confused:
(ps: We hebben nu alleen nog maar excel 2007)

Toch bedankt voor het meedenken. :thumb:

Koos
 
Verwijder eens alle lege rijen onder de laatst gebruikte cel. (niet leegmaken maar echt verwijderen).
Bestand opslaan, sluiten en heropenen. Daarna Initialize code eens terug draaien.
 
Hoi Warme bakkertje,

de bovenstaande oplossing werkt, alleen als ik data laat wegschrijven in mijn werkblad van uit mijn userform, worden de volgende keer weer legen cellen toegevoegd.

Wegschrijven doe ik op deze manier
Code:
Private Sub cmdOK_Click()

ActiveWorkbook.Sheets("Sheet1").Activate
    Range("A4").Select
    ActiveSheet.Unprotect Password:=""
    Do
    If IsEmpty(ActiveCell) = False Then
        ActiveCell.Offset(1, 0).Select
    End If
    Loop Until IsEmpty(ActiveCell) = True
    ActiveCell.Value = txtDatum.Value
    ActiveCell.Offset(0, 1) = 
    ActiveCell.Offset(0, 2) = 
    ActiveCell.Offset(0, 3) = 
    ActiveCell.Offset(0, 4) = 
    ActiveCell.Offset(0, 5) = 
    ActiveCell.Offset(0, 6) = 
    ActiveCell.Offset(0, 7) = 
    ActiveCell.Offset(0, 8) = 
    ActiveCell.Offset(0, 9) = 
    ActiveSheet.Protect Password:="", userinterfaceonly:=True
    Unload Me
    
    End If
    
End Sub

de "Dynamische lijst" staat in kolom Z.
Zou ik in de manier van wegschrijven iets moeten veranderen ?

Zou het misschien mogelijk & een oplossing zijn om de "Dynamische lijst" op een ander wekblad te zetten ??

Groeten,
Koos
 
Laatst bewerkt:
Heb je'm dan zo geprobeerd?
Code:
Private Sub UserForm_Initialize()
    With Sheets("Blad1")
        sq = .Range("Z1:Z" & .Cells(Rows.Count, 26).End(xlUp).Row)
        ComboBox1.List = sq
    End With
End Sub

Code voor wegschrijven
Code:
Private Sub cmdOK_Click()
Dim lRow As Integer
With Sheets("Sheet1")
    .Unprotect Password:=""
    lRow = .Range("A65536").End(xlUp).Offset(1).Row ' 1048576 in 2007
    .Cells(lRow, 1) = txtDatum.Value
    .Cells(lRow, 2) =
    .Cells(lRow, 3) =
    .Cells(lRow, 4) =
    .Cells(lRow, 5) =
    .Cells(lRow, 6) =
    .Cells(lRow, 7) =
    .Cells(lRow, 8) =
    .Cells(lRow, 9) =
    .Cells(lRow, 10) =
    .Protect Password:="", UserInterfaceOnly:=True
End With
Unload Me
End Sub
 
Laatst bewerkt:
Hoi Warme bakkertje

:thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb:

ik heb er nog even op moeten zweten, maar het is dankzij jouw oplossingen gelukt.
Enne, moet zeggen dat het wegschrijven van data nu ook een stuk sneller gaat. :d

Nogmaals heel erg bedankt. Zonder je hulp was het mij nooit gelukt :eek:

Groeten
Koos
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan