Excel Daten sortieren in nächste leere Zeile

Dieses Thema Excel Daten sortieren in nächste leere Zeile im Forum "Microsoft Office Suite" wurde erstellt von joergi78, 26. Feb. 2007.

Thema: Excel Daten sortieren in nächste leere Zeile Hallöchen an alle, ich habe mal wieder ne Frage: Wie muss ein Marko lauten, dass nach dem sortieren direkt in der...

  1. Hallöchen an alle,
    ich habe mal wieder ne Frage:
    Wie muss ein Marko lauten, dass nach dem sortieren direkt in der nächsten leeren Zeile die Zelle in Spalte A markiert wird???
     
  2. Hallo joergi78,

    was soll denn da sortiert werden ? ganzes Blatt, Selektion ? ? ?
    (oder wie sehen die Makro-Zeilen bzgl. Sortieren aus ?)

    Gruß Matjes :)
     
  3. das ganze Blatt soll sortiert werden. Außer Zeile 1, diese enthält überschriften
     
  4. Und nach welchen Spalten soll sortiert werden ? Nur nach Spalte A ?

    Das sähe dann so aus.

    Gruß Matjes :)
    Code:
    Sub NachSpalteASortieren()
    
      Const cERSTEZEILE = 2
      Const cSPALTE_A = 1
      
      Dim ws As Worksheet
      Dim lRows As Long, lCols As Long
      
      Set ws = ActiveSheet
      lRows = ws.Cells(ws.Rows.Count, cSPALTE_A).End(xlUp).Row
      lCols = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
      
      If lRows > cERSTEZEILE Then
        ws.Range(ws.Cells(cERSTEZEILE, 1), ws.Cells(lRows, lCols)).Sort _
          Key1:=ws.Cells(cERSTEZEILE, cSPALTE_A), _
          Order1:=xlAscending, _
          Header:=xlNo
      End If
      
      ws.Range(ws.Cells(lRows + 1, cSPALTE_A), ws.Cells(lRows + 1, cSPALTE_A)).Activate
      
    AUFRAEUMEN:
      Set ws = Nothing
    End Sub
     
  5. und wie muss das ganze dann heißen wenn das Blatt geschützt ist?
     
  6. soweit klappt es ja, nur das Problem ist, dass die nächste Freie Zelle in Spalte A markiert wird und es auch zwischendurch leere Zellen in Spalte A gibt.
    Es muss aber die nächste leere Zelle in Spalte A markiert werden, wenn die ganze Zeile leer ist.
    geht das auch???
     
  7. Hallo joergi78,

    dann probier mal diese Version.  Wenn für den Blattschutz ein Passwort verwendet wird, müßtest du die Konstannte  cPASSWORT = entsprechend ändern.

    Gruß Matjes :)

    Code:
    Sub NachSpalteASortieren()
    
    
      Const cPASSWORT = 
      Const cERSTEZEILE = 2
      Const cSPALTE_A = 1
      
      Dim ws As Worksheet
      Dim lRows As Long, lCols As Long
      
      Set ws = ActiveSheet
      lRows = ws.Cells(ws.Rows.Count, cSPALTE_A).End(xlUp).Row
      lCols = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
      
      If lRows > cERSTEZEILE Then
      
       ->BlattSchutz aufheben
        If cPASSWORT <>  Then
          ws.Unprotect Password:=cPASSWORT
        Else
          ws.Unprotect
        End If
        
       ->sortieren
        ws.Range(ws.Cells(cERSTEZEILE, 1), ws.Cells(lRows, lCols)).Sort _
          Key1:=ws.Cells(cERSTEZEILE, cSPALTE_A), _
          Order1:=xlAscending, _
          Header:=xlNo
          
       ->Zell-Formatierung -> geschützt löschen
        ws.Cells.Locked = False
       ->Zell-Formatierung -> geschützt für beschriebene Zellen setzen
        ws.Range(ws.Cells(1, 1), ws.Cells(lRows, lCols)).Locked = True
          
       ->BlattSchutz setzen
        If cPASSWORT <>  Then
          ws.Protect _
            Password:=cPASSWORT, _
            DrawingObjects:=True, _
            Contents:=True, _
            Scenarios:=True
        Else
          ws.Protect _
            DrawingObjects:=True, _
            Contents:=True, _
            Scenarios:=True
        End If
      End If
      
      
      lRows = ws.Cells(ws.Rows.Count, cSPALTE_A).End(xlUp).Row
      ws.Range(ws.Cells(lRows + 1, cSPALTE_A), ws.Cells(lRows + 1, cSPALTE_A)).Activate
      
    AUFRAEUMEN:
      Set ws = Nothing
    End Sub
     
  8. diese Version markiert die Spalte A der ersten freien Zeile.

    Gruß Matjes :)
    Code:
    Sub NachSpalteASortieren2()
    
    
      Const cPASSWORT = 
      Const cERSTEZEILE = 2
      Const cSPALTE_A = 1
      
      Dim ws As Worksheet
      Dim lRows As Long, lCols As Long, lRowLast As Long, x As Long
      
      Set ws = ActiveSheet
      lRows = ws.Cells(ws.Rows.Count, cSPALTE_A).End(xlUp).Row
      lCols = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
      lRowLast = 0
      For x = 1 To lCols
        lRows = ws.Cells(ws.Rows.Count, x).End(xlUp).Row
        If lRowLast < lRows Then lRowLast = lRows
      Next
      lRows = lRowLast
      
      If lRows > cERSTEZEILE Then
      
       ->BlattSchutz aufheben
        If cPASSWORT <>  Then
          ws.Unprotect Password:=cPASSWORT
        Else
          ws.Unprotect
        End If
        
       ->sortieren
        ws.Range(ws.Cells(cERSTEZEILE, 1), ws.Cells(lRows, lCols)).Sort _
          Key1:=ws.Cells(cERSTEZEILE, cSPALTE_A), _
          Order1:=xlAscending, _
          Header:=xlNo
          
       ->Zell-Formatierung -> geschützt löschen
        ws.Cells.Locked = False
       ->Zell-Formatierung -> geschützt für beschriebene Zellen setzen
        ws.Range(ws.Cells(1, 1), ws.Cells(lRows, lCols)).Locked = True
          
       ->BlattSchutz setzen
        If cPASSWORT <>  Then
          ws.Protect _
            Password:=cPASSWORT, _
            DrawingObjects:=True, _
            Contents:=True, _
            Scenarios:=True
        Else
          ws.Protect _
            DrawingObjects:=True, _
            Contents:=True, _
            Scenarios:=True
        End If
      End If
      
      ws.Range(ws.Cells(lRows + 1, cSPALTE_A), ws.Cells(lRows + 1, cSPALTE_A)).Activate
      
    AUFRAEUMEN:
      Set ws = Nothing
    End Sub
     
  9. ja, aber er springt in Zeile 2000 und sperrt alle Zellen.
    Er soll aber nur die Zellen sperren, die vorher auch gesperrt ware.
    Welcher Teil ist denn der Sprung in die leere Zelle der leeren Zeile???
    dann bastel ich mir das Marko passend zusammen
     
  10. Hallo joergi78,

    markiert wird am Ende des Makros z.B. hier:
    Code:
      ws.Range(ws.Cells(lRows + 1, cSPALTE_A), ws.Cells(lRows + 1, cSPALTE_A)).Activate
    Hier werden die Zellen gesperrt gesetzt:
    Code:
       ->Zell-Formatierung -> geschützt für beschriebene Zellen setzen
        ws.Range(ws.Cells(1, 1), ws.Cells(lRows, lCols)).Locked = True
    Da müßtest du ggf. die Werte für lRows, lCols anpassen.

    Gruß Matjes :)
     
Die Seite wird geladen...

Excel Daten sortieren in nächste leere Zeile - Ähnliche Themen

Forum Datum
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Excel - Bestimmte Daten (Zeilen) in ein anderes Tabellenblatt einfügen Windows XP Forum 7. Juli 2012
Excel 2000 Liste Daten Gültigkeit erweitern Microsoft Office Suite 21. Dez. 2011
Sehr viele Daten in Excel-Datei! Frage! Microsoft Office Suite 11. Sep. 2011
Re: Excel - Hilfe bei Datenstruktur für spätere UserForm Windows XP Forum 6. Aug. 2010