Microsoft Excel

Herbers Excel/VBA-Archiv

Laufzeitfehler beim sortieren

Betrifft: Laufzeitfehler beim sortieren von: Gordon
Geschrieben am: 22.07.2008 11:01:32

Moin,

ich möchte meine Liste gerne per Makro sortieren. Leider bekomme ich immer den Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht. Leider sehe ich den Fehler woran es liegen könnte nicht. Auch die VB-Hilfe konnte mir nicht weiterhelfen. Hat da jemand eine Idee? Hier mal der Quelltextbereich, wo die Sortierung drin steht:


'Unternehmensliste erstellen
Workbooks.Add
    Anzahl = ActiveWorkbook.Sheets.Count
    
    For i = 1 To Anzahl
        Sheets("Tabelle" & i).Select
            Select Case i
            Case Is > 1
                Sheets("Tabelle" & i).Select
                ActiveWindow.SelectedSheets.Delete
            End Select
    Next i
    
'Daten vom Generator zu Unternehmensliste übertragen
ActiveWorkbook.Sheets("Tabelle1").Range("1:1").Value = ThisWorkbook.Sheets("Format Unt").Range(" _
1:1").Value
Set wksT = ActiveWorkbook.Sheets("Tabelle1")
lngT = 1
With ThisWorkbook.Sheets("Generator")
    Do While .Cells(lngG + 1, 1) <> ""
        lngG = lngG + 1
        strAG = .Cells(lngG, 19)
        strN = .Cells(lngG, 21)
        lngT = lngT + 1
        wksT.Cells(lngT, 2) = .Cells(lngG, 18).Value
        wksT.Cells(lngT, 3) = strAG
        wksT.Cells(lngT, 8) = "Unternehmen HH Modell 2008; Unternehmen ALLGEMEIN"
        wksT.Cells(lngT, 10) = .Cells(lngG, 23).Value
        Do While strAG = .Cells(lngG + 1, 19) And .Cells(lngG + 1, 1) <> ""
            lngG = lngG + 1
            strN = strN & "; " & .Cells(lngG, 21)
        Loop
        wksT.Cells(lngT, 1) = strN
    Loop
End With


'Unternehmensliste formatieren und speichern
ActiveWorkbook.Sheets("Tabelle1").Cells.EntireColumn.AutoFit

ActiveWorkbook.Sheets("Tabelle1").Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range(" _
B2") , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & Format(Date, "YYYY/MM/DD") & " _
_Listengenerator - Untern.xls", FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
ActiveWorkbook.Close


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Kawensmann
Geschrieben am: 22.07.2008 11:36:43

Hallo,

dass die VB-Hilfe nicht weiterhilft, ist ja kaum zu glauben. Da stehen doch schöne Beispiele drin.

Die Sort-Methode kannst du nicht direkt auf das Sheet anwenden, sondern nur auf eine Range

also z.B.

Worksheets("Sheet1").Range("A1:C20").Sort usw.

oder

Worksheets("Sheet1").Range("A1").Sort usw.

wobei im letzteren Fall der aktive Bereich sortiert wird.

Gruß
Kawensmann


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Gordon
Geschrieben am: 22.07.2008 12:14:56

Danke,

aber nun bekomme ich bei folgendem Quelltext den Laufzeitfehler '1004':

ActiveWorkbook.Sheets("Tabelle1").Range("a2:j2501").Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("B2"), Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Andi
Geschrieben am: 22.07.2008 12:33:30

Hi,

so wie das jetzt in Deinem Code steht, kommt der SortKey aus Zelle C2 in der aktuell aktiven Tabelle, was nicht notwendigerweise Tabellle1 sein muss. Gib mal Workbook und Tabelle mit an und versuchs nochmal.

Ansonsten enthält die Fehlermeldung ja einige Hinweise auf die mögliche Ursache. Bist Du dem mal nachgegangen?

Schönen Gruß,
Andi


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Gordon
Geschrieben am: 22.07.2008 13:09:37

Moin Andi,


so wie das jetzt in Deinem Code steht, kommt der SortKey aus Zelle C2 in der aktuell aktiven  _
Tabelle, was nicht notwendigerweise Tabellle1 sein muss.


Aber den Quelltext davor "ActiveWorkbook.Sheets("Tabelle1").Cells.EntireColumn.AutoFit" führt er ja noch ohne Probleme aus, obwohl da auch die aktive Tabelle angesprochen wird. Und schon direkt danach meckert er aber über dien Sortierungsquelltext. Es geht da immer noch in der selben Tabelle umher.


Gib mal Workbook und Tabelle mit an und versuchs nochmal.


Da müßte ich ja mal fragen wie das geht, da ich dieses Workbook zu dem Zeitpunkt gerade erst im Makro erzeugt habe und es daher noch keinen spezifischen Namen hat. Oder sehe ich da etwas falsch?


Ansonsten enthält die Fehlermeldung ja einige Hinweise auf die mögliche Ursache. Bist Du dem  _
mal nachgegangen?


Mit der Fehlermeldung kann ich leider mit meinem beschränktem Wissen nichts anfangen. Auch nicht mit der Hilfe dazu.


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Andi
Geschrieben am: 22.07.2008 13:36:59

Hi,

Es geht da immer noch in der selben Tabelle umher.

Eben nicht.
Range("C2") bezeichnet die Zelle C2 in der aktiven Tabelle.
Sheets("Tabelle1").Range("C2") bezeichnet die Zelle C2 in Tabelle1, egal welche Tabelle aktiv ist.

Schönen Gruß,
Andi


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Rudi Maintaire
Geschrieben am: 22.07.2008 13:11:07

Haallo,

With ActiveWorkbook.Sheets("Tabelle1")
  .Range("a2").Sort Key1:=.Range("C2"), Order1:=xlAscending, Key2:=.Range("B2"), Order2:= _
xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With



Gruß
Rudi


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Gordon
Geschrieben am: 22.07.2008 13:39:53

Klasse,

so hat es geklappt. Aber macht "With" so einen großen Unterschied aus?

Danke + Gruß
Gordon


  

Betrifft: AW: Laufzeitfehler beim sortieren von: Rudi Maintaire
Geschrieben am: 22.07.2008 15:51:09

entscheidend ist die saubere Referenzierung.
Du könntest auch

ActiveWorkbook.Sheets("Tabelle1").Range("a2").Sort Key1:=ActiveWorkbook.Sheets("Tabelle1").Range("C2"), Order1:=xlAscending, Key2:=ActiveWorkbook.Sheets("Tabelle1").Range("B2"), Order2:= xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

schreiben.


 

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler beim sortieren"