• 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.

Select eerstvolgende lege cel in een Range

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
535
Goede morgen Specialisten,

Ik probeer met volgende code de eerstvolgende lege cel te selecteren in een Range :

Code:
Private Sub CommandButton1_Click()
Range("Deelnemers").End(xlDown).Offset(1).Select
End Sub

Mijn range "Deelnemers" = C9:C33, C42:C66, C75:C99

Wanneer ik de code laat werken gaat hij naar B35.

Kan misschien ergens kloppen omdat de eerst volgende lege cel in kolom C "C35" is en die cel is een "lid" van een reeks samengestelde cellen (Merged) zijnde B35:Z37

Dus selecteert hij de eerste cel van die Merged groep. Denk ik....

Desondanks ik de eerstvolgende lege cel wil selecteren in een vast bepaalde Range gaat hij toch de eerste lege cel buiten die range selecteren.

Wat zit er fout in mijn code?


Thanks

Pascal
 
Laatst bewerkt:
Ik zie niet waar het mis kan lopen.
Welke cel zou dan geselecteerd moeten worden?
De code selecteert de eerste lege cel in het bereik 'deelnemers', als je die tenminste correct gedefiniëerd hebt.
 

Bijlagen

Laatst bewerkt:
Plaats dus je document eens, of een relevant voorbeeld.
 
Cobbe,

Ik heb de merged cel zoals in #1 vermeld "gedemerged" De eerstvolgende lege cel in mijn bereik (dat juist is ingesteld) zou C47 moeten zijn en daar gaat hij niet naartoe.

Hij blijft hangen op C35. Hoewel die niet in mijn bereik is opgenomen.

Range voor Deelnemers : ='Overzicht Lotto-10'!$C$9:$C$33;'Overzicht Lotto-10'!$C$42:$C$66;'Overzicht Lotto-10'!$C$75:$C$99

Groetjes
 
Cobbe,

In jouw voorbeeld heb je een doorlopende range bepaald voor deelnemers. dus hij zoekt inderdaad de eerstvolgende lege cel.

Mijn Range wordt echter onderbroken : Range voor Deelnemers : ='Overzicht Lotto-10'!$C$9:$C$33;'Overzicht Lotto-10'!$C$42:$C$66;'Overzicht Lotto-10'!$C$75:$C$99

Zie voorbeeld in #5

Ik heb drie "pagina's" met namen en hij zou in telkens 25 rijen de eerstvolgende lege cel moeten gaan zoeken. dus in een totaal van 75 rijen.
 
Welk cel zou hij dan moeten selecteren? De lege C47? Of C85?
 
Probeer deze eens:

Code:
Private Sub CommandButton1_Click()
Dim cl As Variant
For Each cl In Range("Deelnemers")
  If cl = "" And cl.Offset(, -1) <> "" Then Exit For
Next
ActiveSheet.Cells(cl.Row, 3).Select
End Sub
 
Terwijl jullie bezig waren op deze zonnige zaterdag (wat doen we eigenlijk hier achter het scherm?), heb ik mezelf ook niet onbetuigd gelaten en ben tot het volgende gekomen:
Code:
Private Sub CommandButton1_Click()
    Dim rng As Range
    Dim arr
    Dim countareas As Long, i As Long, j As Long
    
    countareas = Range("Deelnemers").Areas.Count
    For i = 1 To countareas
        arr = Range("Deelnemers").Areas(i)
        For j = 1 To UBound(arr, 1)
            If IsEmpty(arr(j, 1)) Then
                Range("Deelnemers").Areas(i).Cells(j).Select
                Exit Sub
            End If
        Next j
    Next i
End Sub
 

Bijlagen

In dit voorbeeld C47 omdat dit de eerstvolgende lege cel is in mijn Range Deelnemers

Indien er een naam zou staan dan is het uiteraard de cel C85
 
Iets beknopter (edit: maar nog steeds veel langer dan de oplossing van Cobbe die ook werkt...):
Code:
Private Sub CommandButton1_Click()
    
    Dim rng As Range
    Dim arr
    Dim j As Long
    
    For Each rng In Range("Deelnemers").Areas
        arr = rng
        For j = 1 To UBound(arr, 1)
            If IsEmpty(arr(j, 1)) Then
                rng.Cells(j).Select
                Exit Sub
            End If
        Next j
    Next rng
End Sub
 
Laatst bewerkt:
Cobbe, MarcelBeug,

De door jullie aangereikte oplossingen werken perfect. :thumb::thumb:

Bedankt

Nog een prettig weekend


Groetjes

Pascal
 
Of nog iets korter:
Code:
For Each cl In Range("Deelnemers").SpecialCells(4)
    Application.Goto cl, True
    Exit For
Next cl
 
Laatst bewerkt:
Edmoor,

Uw korte versie werkt ook. 1 "nadeel" : hij vind inderdaad de cel en dan verschuift mijn sheet en is de cel zichtbaar in de linkerbovenhoek van mijn sheet. met de pijltoetsen kan ik dan alleen nog maar naar boven en beneden.

Alle cellen met uitzondering van de "Deelnemers" zijn geblokkeerd. (In de afgewerkte versie) Een deel van mijn Sheet is dus niet meer zichtbaar...


Groetjes

Pascal
 
Dan zet je die True op False :)
 
Zo doet 'ie het ook:
Application.Goto Range(Split(Range("Deelnemers").SpecialCells(4).Address, ",")(0)), False

Of:
Range(Split(Range("Deelnemers").SpecialCells(4).Address, ",")(0)).Select

Kolommen A en B blijven hier gewoon zichtbaar.
 
Laatst bewerkt:
edmoor,

Werkt blijkbaar niet op een beveiligd blad... :confused:

Alle voorgaande wel...
 
Code:
Sub hsv()
Dim area As Range, tb As Range, rr As Range
For Each area In Range("deelnemers").Areas
   Set tb = area
   Set rr = tb.Cells(tb.Rows.Count)
   If area.Cells(1).End(xlDown).Address < tb.Cells(tb.Rows.Count).Address Then
     Application.Goto area.Cells(1).End(xlDown).Offset(1),true
     Exit Sub
   End If
 Next area
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan