Thema Datum  Von Nutzer Rating
Antwort
Rot VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler
06.04.2023 11:33:01 Bernd
Solved

Ansicht des Beitrags:
Von:
Bernd
Datum:
06.04.2023 11:33:01
Views:
798
Rating: Antwort:
 Nein
Thema:
VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler

Hallo liebe Leute,

heute habe ich einen Fehler in einem Code den ich nicht auflösen kann.

Ich möchte eine Spalte mit Datumswerten abwärts sortieren.
Also habe ich einen Schnipsel aus einem funktionierenden Code herausgezogen, den ich einmal erstellt hatte.


    ActiveWorkbook.Worksheets(ZSheet).AutoFilter.Sort. _
        SortFields.Add2 Key:=Range("M2:M" & EZeile), SortOn:=xlSortOnValues, Order:= _
        xlDescending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


Nun habe ich bei meinem neuen Code die Besonderheit, das die Spalte ZumKopieren leider nicht immer an der gleichen Spalte ist.
Also lasse ich nach der Spalte suchen und möchte danach den Wert in die Sortierfunktion einfügen.
Leider bekomme ich immer nur die Spaltennummer aus der Range "raFund" herausgezogen. Deshalb habe ich schon einiges versucht, um die Variable "ZumKopieren" in die Formel einzufügen, komme aber irgendwie nicht weiter.

        Dim raFund As Range
        Dim ZumKopieren As String
        Spaltenname = "Zum Kopieren"
        With Worksheets(QSheet.Name)
        Set raFund = .Rows(1).Find(what:=Spaltenname, LookIn:=xlValues, lookat:=xlWhole)
        If Not raFund Is Nothing Then
        z = raFund.Column
        'MsgBox "Spalte: " & z
        ZumKopieren = z
        End If
        End With

 ' Sortieren nach Erstelldatum neueste oben
    ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort. _
        SortFields.Add2 Key:=Range(
Cells(1, ZumKopieren), Cells(QletzteZeile, ZumKopieren)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Den Namen des ZSheet aus dem ersten Code habe ich bewusst in QSheet. Name umgesetzt.

Sobald der grüne Abschnitt zur Ausführung kommt bekomme ich einen VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler angezeigt.
Ich bin mir Ziemlich sicher, das es etwas mit dem Roten Abschnitt zu tun hat. 

Ersetze ich den Kode mit der Aktuellen Position der Spalte (17 = Q) funktioniert es.

    ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range("Q1:Q" & QletzteZeile), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
Wenn ich aus der RangeVariable raFund versuche .Name herauszu ziehen, bekomme ich einen Anwendungs- oder objektdefinierter Fehler angezeigt.

Ich habe während ich dies schrieb noch eine Idee bekommen.
Ich habe die Variable x (Dim y As String) anstelle der Variablen z (Dim z As Long) eingesetzt und den Code umgeschrieben:

        Dim y As String
        Dim ZumKopieren As String
        Spaltenname = "Zum Kopieren"
        With Worksheets(QSheet.Name)
        Set raFund = .Rows(1).Find(what:=Spaltenname, LookIn:=xlValues, lookat:=xlWhole)
        If Not raFund Is Nothing Then
        y = raFund.Address
        ZumKopieren = z
        End If
        End With

 ' Sortieren nach Erstelldatum neueste oben
    ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range(ZumKopieren & "1:" & ZumKopieren & QletzteZeile), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Jetzt läuft der Code bis zu .Apply durch und gibt mir dann den VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler aus.

Gefunden: 

ZumKopieren = z ist natürlich  ZumKopieren = y

Jetzt geht es.

So, jetzt habe ich so viel geschrieben, vieleich hilft es ja jemand anderem.

Was ich nicht verstehe:
ZumKopieren = y = "$Q$1"
Das würde bedeuten, das 

Range(ZumKopieren & "1:" & ZumKopieren & QletzteZeile),

Range("$Q$1" & "1:" & "$Q$1" & 20502), wäre. Etwas unsinnige Adresse oder?

Da müsste doch auch 

    ActiveWorkbook.Worksheets(QSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range(ZumKopieren), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
gehen oder?

Tut es.
Verstehe ich zwar nicht, tut es aber. Beide Versionen.

Tschau und vieleicht hilft es ja jemand Anderem.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA-Fehler 1004 – Anwendungs- oder objektdefinierter Fehler
06.04.2023 11:33:01 Bernd
Solved