Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Recordermakro ändern in variablen Bereich


Betrifft: Recordermakro ändern in variablen Bereich von: Gisela
Geschrieben am: 24.07.2017 20:03:44

Hallo zusammen,
ich habe mit dem Recorder - leider habe nur diese Kenntnisse - ein Makro zum sortieren aufgezeichnet. Nun wechselt aber der Bereich immer wieder, da sich die Anzahl der Zeilen durch neue Datensätze erweitert. Kann mir bitte jemand helfen, den Makro so zu ändern, dass immer bis zur letzten Zeile markiert und sortiert wird.Sortieren erfolgt nach Spalte B.
Hier mein Recoderergebnis:

Sub sortieren()
    Range("B7:AP92").Select 'dieser Bereich sollte variabel sein
    ActiveWorkbook.Worksheets("anwesen").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("anwesen").Sort.SortFields.Add Key:=Range( _
        "B7:B92"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("anwesen").Sort
        .SetRange Range("B7:AP92")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AG7").Select
End Sub
Vielen Dank für jede Hilfe
Liebe Grüße
Gisela

  

Betrifft: AW: Recordermakro ändern in variablen Bereich von: Daniel
Geschrieben am: 24.07.2017 20:16:10

Hi

Sub sortieren()
With ActiveWorkbook.Worksheets("anwesen")
    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=.Range("B7"), _
                         SortOn:=xlSortOnValues, _
                         Order:=xlAscending, _
                         DataOption:= xlSortNormal
    .Sort.SetRange .Range(.Range("B7"), .Cells.SpecialCells(xlcelltypelastcell))
    .Sort.Header = xlGuess
    .Sort.MatchCase = False
    .Sort.Orientation = xlTopToBottom
    .Sort.SortMethod = xlPinYin
    .Sort.Apply
 End With
   
End Sub
ich habe jetzt noch ein paar andere Umstellungen gemacht, die den Code etwas übersichlicher machen (zumindest für mich)

Gruß Daniel


  

Betrifft: AW: Recordermakro ändern in variablen Bereich von: Gisela
Geschrieben am: 24.07.2017 20:52:00

Hallo Daniel,

vielen Dank, funktioniert,
Eine Frage; aber vielleicht fehlen mir einfach die notwendigen Kenntnisse, sorry.

Was muss ich ändern, wenn sich die Spaltenanzahl mal ändert. Es wird immer die ganze Zeile sortiert. Ich frage deshalb, da ich in einigen anderen Spalten noch Informationen stehen habe, die nicht mitsortiert werden sollen.

Liebe Grüße
Gisela


  

Betrifft: AW: Recordermakro ändern in variablen Bereich von: Daniel
Geschrieben am: 24.07.2017 20:55:08

Hi

.Range(.Range("B7"), .Cells(.Cells.SpecialCells(xlcelltypelastcell).Row, xxx))

für xxx setzt du die Nummer oder den Buchstaben der Spalte ein, bis zu der sortiert werden soll.

Gruß Daniel


  

Betrifft: AW: Recordermakro ändern in variablen Bereich von: Gisela
Geschrieben am: 24.07.2017 21:37:41

Hallo Daniel,
habe es so geändert:
.Sort.Range(.Range("B7"),.Cells(.Cells.SpecialCells(xlcelltypelastcell).Row, AQ))

und erhalte eine Fehlermeldung:

Fehler beim Kompilieren
Eingabe:=

Was habe ich falsch gemacht?
Liebe Grüße
Gisela


  

Betrifft: "AQ" von: KlausF
Geschrieben am: 24.07.2017 21:44:13

Moin Gisela,

.Sort.Range(.Range("B7"),.Cells(.Cells.SpecialCells(xlcelltypelastcell).Row, "AQ"))

Gruß
Klaus


  

Betrifft: AW: "AQ" Fehlermeldung von: Gisela
Geschrieben am: 24.07.2017 21:53:16

Hallo KlausF
danke für deine Hilfe,

.Sort.Range(.Range("B7"),.Cells(.Cells.SpecialCells(xlcelltypelastcell).Row,"AQ"))

erhalte die gleiche Fehlermeldung.

Noch eine Idee?
Vielen Dank und Grüße
Gisela


  

Betrifft: AW: "AQ" Fehlermeldung von: Zwenn
Geschrieben am: 24.07.2017 22:22:17

Hallo Gisela,

es sind nur 2 Flüchtigkeitsfehler in der Zeile. Sie muss so aussehen:

.Range(.Range("B7"), .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Column, "AQ"))
Also vorne noch das .sort wegnehmen und hinten vor "AQ" das Wort Row durch Column ersetzen. Du willst ja bis Spalte AQ Sortieren, nicht bis Zeile ;-)

Um Missverständnissen vorzubeugen, der Teil vor der Änderung bleibt gleich. Die gesamtzeile sieht also so aus:
.Sort.SetRange .Range(.Range("B7"), .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Column, "AQ") _
)

Viele Grüße,

Zwenn


  

Betrifft: AW: "AQ" Fehlermeldung von: Daniel
Geschrieben am: 24.07.2017 22:31:23

HI Zwenn

das .Row ist schon richtig.

das .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Column, "AQ") muss die rechte untere Zelle des zu sortierenden Bereichs sein.
die Spalte wird über das "AQ" festgeleg und die Zeile über die Zeilennummer der letzten verwendeten Zelle auf dem Blatt.

das aber leere Zellen sowieso immer an den letzten Platz sortiert werden könnte man auch einfach so schreiben:

.Sort.SetRange .Range(.Range("B7"), .Cells(.Rows.Count, "AQ"))
Gruß Daniel


  

Betrifft: AW: "AQ" Fehlermeldung von: Zwenn
Geschrieben am: 24.07.2017 22:38:42

Hi Daniel,

stimmt. Ich hatte es ausprobiert, aber nur den Bereich bis Zeile 12 und Spalte AR gefüllt. Haptsache es klappt jetzt für Gisela :-)=)

Viele Grüße,

Zwenn


  

Betrifft: Funktioniert nach Änderung von: Gisela
Geschrieben am: 24.07.2017 22:48:52

Hallo Daniel,
habe deinen Änderungsvorschlag eingebaut. Funktioniert genau wie ich es brauche.

Herzlichen Dank
Gisela


  

Betrifft: AW: "AQ" Fehlermeldung von: Gisela
Geschrieben am: 24.07.2017 22:46:10

vielen dank für deine Hilfe, o.T.


Beiträge aus den Excel-Beispielen zum Thema "Recordermakro ändern in variablen Bereich"