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

Laatst ingevulde cel selecteren na uitvoeren macro

Status
Niet open voor verdere reacties.

HarryBee

Gebruiker
Lid geworden
8 jul 2008
Berichten
240
Beste helpers,

Ik heb een bestelblad in excel. Als ik in kolom 1 het maximale aantal van 37 selecties heb bereikt, dan verschijnt een melding. Na het drukken op OK worden alle lege velden in kolom 1 geblokkeerd. Zodra ik een kruisje (selectie) weg haal, dan worden de velden weer vrijgegeven. Op zich werkt dit goed, maar in mijn geval wordt dan de laatste ingevulde cel uit die kolom geselecteerd. Dit is lastig omdat er ruim 1400 regels zijn. Wat ik zou willen is dat na het uitvoeren van de code de cel wordt geselecteerd die als laatste is ingevuld. Zie hieronder de code.
Weet iemand raad? Mijn dank is groot.

Groet Harry

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False

If Range("A1") = 37 Then
   
    ActiveSheet.Unprotect
    ActiveSheet.Range("$A$3:$A$1450").AutoFilter Field:=1, Criteria1:="="
    Selection.End(xlDown).Select
    Range(Selection, Selection.End(xlUp)).Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Range("$A$3:$A$1450").AutoFilter Field:=1
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
    MsgBox "U heeft het maximum van 37 bestelregels bereikt."
    Selection.Range("A1450").End(xlUp).Cells.Select
    
    Else
    
    ActiveSheet.Unprotect
    Range("$A$3:$A$1450").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
    Selection.Range("A1450").End(xlUp).Cells.Select

        
End If
Application.ScreenUpdating = True
End Sub
 
Heb het niet kunnen testen omdat ik je bestand niet kan nabootsen, maar probeer dit eens;
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Columns(1).SpecialCells(2).Rows.Count = 38 Then
        MsgBox "U heeft het maximum van 37 bestelregels bereik.", vbInformation + vbOKOnly, "Maximum"
        With ActiveSheet
            .Unprotect
            .UsedRange.AutoFilter 1, "="
            .Columns(1).SpecialCells(2).Offset(1).SpecialCells(2).Locked = True
            .UsedRange.AutoFilter
            .Protect
        End With
        Application.Goto Range("A" & Rows.Count).End(xlUp).Row
    Else
        With ActiveSheet
            .Unprotect
            .Columns(1).SpecialCells(2).Offset(1).SpecialCells(2).Locked = False
            .Protect
        End With
        Application.Goto Range("A" & Range("A" & Rows.Count).End(xlUp).Row)
    End If
    Application.ScreenUpdating = True
End Sub
Probeer .Select en .Activate te vermijden in VBA
 
Ik had toevallig hetzelfde probleem deze ochtend en heb ergens 2 stukjes code gevonden waar je wellicht iets mee kan. Ik heb nu zelf nog een ander probleem waar ik zo een post voor ga openen, maar ik zal je eerst even mijn codes geven. Wellicht heb je er iets aan:

' Laatste cel bepalen
Dim LaatsteCel As Variant
LaatsteCel = ActiveCell.Address

Daarna plak je je overige code en je sluit af met de volgende code

' Terug naar laatste cel
Sheets("Planbord").Select
Range(LaatsteCel).Select

Succes (ik ga nu snel mijn eigen probleem posten ;) )
 
Opgelost

@ Spaarie, dank voor het meedenken en je tijd. Deze code doet hetzelfde als die van mij, maar met toevoeging van cactus77 werkt het wel. Nogmaals mijn dank.
@ Cactus77, de oplossing werkt goed. Mijn dank voor je tijd en inzet.

Groet Harry
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan