AW: Sortieren nach Ordernummer
26.08.2005 01:52:05
gnilk
Halo Leute,
das mit dem Feld G11 auswaehlen geht schon. Das Makro funktioniert ja wunderbar ohne den Commandbutton. Wenn man ganz normal mit dem Makrorecorder dieses Sort bei Data auswaehlt, dann wir automatisch alles markiert.
Ich habe trotzdem mal alles markiert, so wie Du es wolltest. Doch wie erwartet kommt der Fehler wieder ab Selection.Sort
In diesem Selection.Sort Abschnitt ist der Wurm drin! Hier noch einmal der Code:
Private Sub CommandButton1_Click()
' sollte jetzt die Box zum Eintragen zeigen
Dim filStr As Variant
filStr = InputBox("order number of this month", "Order Number")
' abrechen, falls keine Werte in der Box sind
If StrPtr(filStr) = 0 Then
MsgBox "You want to cancel it?"
GoTo GiveUp
ElseIf filStr = "" Then
MsgBox "This was OK, but a order number is needed!"
GoTo GiveUp
Else
MsgBox "Beautiful!" & filStr
End If
' maximiert das Fenster von der Tabelle und kopiert es in die Go! Mappe
Windows("blabla.XLS").Activate
Sheets("Daten").Select
Sheets("Daten").Copy After:=Workbooks("GO.xls").Sheets(1)
' Soll jetzt das Fenster von den Daten der Go Seite oeffnen
Windows("GO.XLS").Activate
ActiveWindow.WindowState = xlMaximized
' waehlt das richtige Blatt aus der Excel Tabelle aus
' fuer den 2. Command Button
Sheets("Start").Select
' kopiert alles und fuegt nur noch die Werte ein
Sheets("Daten").Select
With Sheets("Daten")
If .FilterMode Then .ShowAllData
.Range("C:BB").Select
End With
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
' Filter entfernen, loeschen der unnoetigen Spalten
Sheets("Daten").Select
Selection.AutoFilter
With Sheets("Daten")
If .FilterMode Then .ShowAllData
.Range("C:D").Delete Shift:=xlToLeft
.Range("C:D,AX:AZ").Delete Shift:=xlToLeft
End With
' Die letzte Zeile loeschen, so dass die Summe verschwindet
Sheets("Daten").Select
With Sheets("Daten")
If .FilterMode Then .ShowAllData
.Range("G11").Select
End With
Selection.End(xlToRight).Select
Selection.End(xlDown).Select
Selection.EntireRow.Delete
With Sheets("Daten")
If .FilterMode Then .ShowAllData
.Range("G11").Select
End With
' Filter wieder setzen
Selection.AutoFilter
' Sortieren der Werte nach Ordernummer
Sheets("Daten").Select
With Sheets("Daten")
If .FilterMode Then .ShowAllData
.Cells.Select
End With
' ab hier kommt dann die Fehlermeldung!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
' Habe auch mal den Auszug des Fehler mit anghaengt:
' Macro Error
' There is an error in the macro you were running. The specified method can't be used
' on the specified object for one of the following reasons.
' · An argument contains a value that is not valid. A common cause of this problem
' is trying to gain access to an object that does not exist; for example, Workbooks
' (5) when only three workbooks are open.
' · The method can't be used in the applied context. For example, some Range object
' methods require that the range contain data. If the range does not contain data,
' the method fails.
' · An external error occurred, such as a failure to read or write from a file.
' For more information about how to use the method, search for the method name in
' Visual Basic Help.
Selection.Sort Key1:=Range("G11"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
GiveUp:
End Sub
Das nennt man wohl Hosen runter lassen. Wer jetzt noch eine Glaskugel braucht, kann nicht lesen. :o)
Ich habe glaube ich schon alles versucht, aber der Fehler ist immer noch da. Verrueckt ist eben, dass das Makro normalerweise ohne den CommandButton funktioniert.
Da ich in Australien sitze kann ich meistens erst das feedback von Euch am naechsten Tag lesen. In diesem Fall sogar erst nach dem Wochenende. Bitte lasst die Frage daher immer als "Frage noch offen", damit ich so viele Anregungen wie moeglich bekomme!
Danke Leute
Ciao Gnilk