Cursor naar rechts in de eerstvolgende lege cel

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste Helpmij'ers,

Ik ben op zoek naar een vba-code waar ik in een willekeurige regel in kolom F de cursor naar de eerstvolgende lege cel rechts van kolom F laat verplaatsen.

Zelf zit ik te denken in deze richting.
Code:
 If .Column = 6 And Not IsEmpty(Target) Then Application.Goto .Offset(, ?)

Alvast bedankt.

Robert
 
Zoiets?
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Lrij As Long
If Target.Column <> 6 Then Exit Sub
Application.Goto Range("G1").End(xlDown).Offset(1, 0)
End Sub
eerstvolgende lege cel rechts van kolom F
of
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Lrij As Long
 If Target.Column <> 6 Then Exit Sub
 Lrij = Cells(Rows.Count, 7).End(xlUp).Row + 1
Application.Goto Cells(Lrij, 7) 
End Sub
de laatst gevulde cel in G +1
 
Heel hartelijk dank voor jullie reacties en dat op kerst (chapeau). Met willekeurig bedoel dat het niet uit maakt in welke regel je staat. De code moet altijd in werking gesteld worden wanneer in kolom F een wijziging plaatsvindt, echter kan het voorkomen dat er in de kolommen G t/m AB gegevens staan, dan is het de bedoeling dat hij kijkt welke cel op dezelfde regel rechts van kolom F leeg is.

Phillip, jouw code werkt gedeeltelijk, deze zorgt ervoor dat de cursor naar de eerstvolgende cel gaat in plaats van de eerstvolgende lege cel. Bovendien gaat jouw code naar beneden (+1). Deze heb ik weggehaald en gaat dus nu naar de eerstvolgende kolom.
 
De eerste volgende lege cel rechts kan je vinden door End(xlToRight). (Eigenlijk de laatste gevulde cel voor een lege cel) Dit is vrij eenvoudig te vinden als je even een macro opneemt en het vervolgens een beetje aanpast.
bv
Code:
If Target.Count = 1 And Target.Column = 6 Then Application.Goto IIf(Target.Offset(, 1) = "", Target.Offset(, 1), Target.End(xlToRight).Offset(, 1))
 
En als alle cellen vanaf F leeg zijn gaat het natuurlijk in de fout (laatste kolom +1, die zal er nooit zijn in de "IIF' vergelijking.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count = 1 And .Column = 6 Then
  If .Offset(, 1) = "" Then
    Application.Goto .Offset(, 1)
  Else
    Application.Goto .End(xlToRight).Offset(, 1)
  End If
 End If
End With
End Sub
 
Laatst bewerkt:
Harry heel erg bedankt voor de toevoeging. Weet jij misschien ook hoe ik jouw code aan kan passen zodat deze een formule in een cel, waar de uitkomst geen gegevens laat zien (bijv. =ALS(G2="Assen";"Assen";"")), ook als een lege cel ziet?
 
Als dit niet werkt gelieve een bestand plaatsen (steeds gokken waar wat staat word je ook niet vrolijk van).
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count = 1 And .Column = 6 Then
  If .Offset(, 1) = "" Or .Offset(, 1).HasFormula Then
    Application.Goto .Offset(, 1)
  ElseIf .End(xlToRight).HasFormula Then
    Application.Goto .End(xlToRight)
  Else
    Application.Goto .End(xlToRight).Offset(, 1)
  End If
 End If
End With
End Sub
Of:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count = 1 And .Column = 6 Then
  If .Offset(, 1) = "" Then
    Application.Goto .Offset(, 1)
  ElseIf .End(xlToRight).HasFormula Then
    Application.Goto .End(xlToRight)
  Else
    Application.Goto .End(xlToRight).Offset(, 1)
  End If
 End If
End With
End Sub
 
Sorry Harry, ik had idd een bestand bij moeten voegen. Ik heb mij onvoldoende gerealiseerd dat er formules in stonden die een code in de weg kunnen staan. Bij deze een bijlage.

Waar het in jouw code mis gaat is dat er ook formules in staan die wel een gegeven bevatten. In het voorbeeld is het de bedoeling dat de cursor naar kolom (Bestemmingsadres) moet gaan.
Bekijk bijlage Verspringen.xlsm
 
Lukt het hiermee?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
With Target
 If .Count = 1 And .Column = 6 Then
 For j = 1 To 23
   If .Offset(, j) = "" Then
     Application.Goto .Offset(, j)
     Exit For
    End If
 Next j
end if
 End With
Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan