Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mit "Range" in Celle "A2" springen und bis zur letzten gefüllten Zelle markieren
#11
Hallo,

versuche es einmal nach diesem Prinzip:

Code:
ActiveWorkbook.Worksheets("Sheet1").ListObjects("Tabelle1").Sort.SortFields.Clear   'Name Tabelle ggf. anpassen
ActiveWorkbook.Worksheets("Sheet1").ListObjects("Tabelle1").Sort.SortFields.Add2 _
Key:=Range("A2:A" & lngLetzte), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal

Funkt nicht ist keine Fehlerbeschreibung. Was geht nicht? Wird ein Fehler angezeigt? Fehlercode? etc.

Grüße
NobX
Antworten Top
#12
DAnke für den Code. Probiere es aus.
Was das "funkt nicht" betrifft, dass soll bedeuten, dass nach der 'Formarierung von A1:H1 der Code abgearbeitet wird aber keine Sortierung erfolgt.
Es gibt auch keine Fehlermeldung.
Antworten Top
#13
Hallöchen,

ich habe ausprobiert und einen VBA-Code gefunden der funktioniert. Nur habe ich die Bereiche nicht dynamisieren können sondern habe die mit fixen Zellbezügen festgelegt. Die von euch vorgeschlagene Variation mit einer Variablen geht nicht. Der Code wird, ohne Fehlermeldung abgearbeitet aber es passiert nichts. HAbe alle möglichen Varianten ausprobiert. NAchfolgend mein Code:


Code:
Sub CSV_kopieren_einfügen()
'
' CSV_kopieren_einfügen Makro
' Kopiert und fügt Daten in "Musikliste-2013" ein

Dim lngletzte As Long
lngletzte = Tabelle1.Cells(Rows.Count, 2).End(xlUp).Row
'Formatiert Überschriften Rahmen - Hintergrundfarbe - Schrift
    Range("A1,B1,C1,D1,E1,F1,G1,H1").Select
        With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .Name = "Arial"
        .Size = 16
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    'Spalten werden an Breite angepasst
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Columns("A:A").EntireColumn.AutoFit
    Columns("B:B").EntireColumn.AutoFit
    Columns("C:C").EntireColumn.AutoFit
    Columns("D:D").EntireColumn.AutoFit
    Columns("E:E").EntireColumn.AutoFit
    Columns("F:F").EntireColumn.AutoFit
    Columns("H:H").EntireColumn.AutoFit
    ActiveCell.SpecialCells(xlLastCell).Select
    'Markierte Zellen werden sortiert
    Range("A2:H25000").Select
        Worksheets(1).Sort.SortFields.Clear
        Worksheets(1).Sort.SortFields.Add2 Key _
        :=Range("A2:A25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
      Worksheets(1).Sort.SortFields.Add2 Key _
        :=Range("B2:B25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    Worksheets(1).Sort.SortFields.Add2 Key _
        :=Range("C2:C25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
      With Worksheets(1).Sort
        .SetRange Range("A2:H25000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
'Markiert in CSV den zu kopierenden Bereich
    Range("A2").Select
    Range("A2:H2").Select
    Range(Selection, Selection.End(xlDown)).Select
   
'Kopiert den selektierten Bereich
    Selection.Copy
'Aktiviert Datei "Kusikliste" und das Arbeitsblatt "Songliste ABC"
    Windows("Musikliste-2023_01.xlsm").Activate
    Sheets("Songliste-ABC").Select
    Range("A2").Select
Rem letzte zeile einer spalte ermitteln und aktivieren
    [A:A].SpecialCells(xlBlanks).Cells(1).Select
'Fügt kopierte Daten ein
    ActiveSheet.Paste
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'Formatiert eingefügte Daten
    With Selection.Font
        .Name = "Arial"
        .Size = 12
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
  'Sortiert gesamte Arbeitsmappe nach "Album-Titel-Interpret"
    Range("A2").Select
    ActiveWorkbook.Worksheets("Songliste-ABC").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Songliste-ABC").Sort.SortFields.Add2 Key:=Range( _
        "A2:A25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Songliste-ABC").Sort.SortFields.Add2 Key:=Range( _
        "B2:B25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Songliste-ABC").Sort.SortFields.Add2 Key:=Range( _
        "C2:C25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Songliste-ABC").Sort
        .SetRange Range("A1:I25000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Call Anzahl_Songs_berechnen
   
End Sub

Sub Anzahl_Songs_berechnen()
'
' Anzahl Songs berechnen
    Range("A2").Select
    [A:A].SpecialCells(xlBlanks).Cells(1).Select
    ActiveCell.FormulaR1C1 = "=COUNTA(R[-14035]C:R[-1]C)"
   
End Sub


Ich möchte das z.B. bei foldendem Code:

Worksheets(1).Sort.SortFields.Clear
        Worksheets(1).Sort.SortFields.Add2 Key _
        :=Range("A2:A25000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal

Das :=Range("A2:A25000") das A2:A25000 dynamisch, nach anzahl tatsächlicher belegter Zelle sprich letzte belegtre Zelle berechnet wird. Dasselbe gilt für die Formel "Anzahl2".

Danke euch schon im vorraus
Antworten Top
#14
Hei,

probiere es mal so:

=Range("A2:A" &  Range("A2").End(xlDown).Row)

Hei,

noch ein Tipp, diesen Stück Code:

Code:
Range("A1,B1,C1,D1,E1,F1,G1,H1").Select
        With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

kann man auch so schreiben, Select ist bäh,

Code:
With Range("A1:H1").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
Hoffe geholfen zu haben
Hubert
Antworten Top
#15
Danke. Du hast mir geholfen.
Was ds A1;B2,... betrifft habe ich das mit einem Makro aufgezeichnet und das muß ich zugeben aus "Faulheit" übergangen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste