HERBERS Excel-Forum - das Archiv
Sortieren-Fehler
Alex

Hallo zusammen,
dieser Code:


Sub sortierendrsa()
Sheets("Tabelle2").Unprotect "Kennwort"
With Sheets("Tabelle1")
.Unprotect "Kennwort"
.Range("A1:A5").Copy
Sheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlPasteValues
.Range("A1:C5").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess
Sheets("Tabelle2").Range("A1:C5").Sort Key1:=Range("A1"), Order1:=xlAscending, Header: _
=xlGuess
.Protect "Kennwort"
Sheets("Tabelle2").Protect "Kennwort"
End With
End Sub


soll folgendes leisten:
-beide Tabellenblätter: Blattschutz aufheben (mit Kennwort)
-Tabelle1: Bereich A1:A5 kopieren
-Tabelle2: die kopierten Daten, im Bereich A1:A5, -Werte einfügen-
-Tabelle1: Bereich A1:C5 Daten sortieren (alphabetisch nach Spalte A, mit den jeweils dazugehörigen Daten in den Spalten B und C)
BIS HIER FÜHRT ER ES AUS!
-Tabelle2: den selben Bereich wie in Tabelle1 sortieren (A1:C5)
MACHT ER NICHT; MELDET FEHLER!
-dann beide Tabellenblätter wieder sperren
fertig.
wieso sortiert der die Tabelle2 nicht!!!
Kann mir jem. weiterhelfen?
Die Reihenfolge der Abläufe muss dabei aber unbedingt eingehalten werden.
grüsse
Alex

AW: Sortieren-Fehler
Hajo_Zi

Hallo Alex
.Range("A1:C5").Sort bezieht sich auf With Sheets("Tabelle1")
vor Range("A1) fehlt ein Punkt

AW: Sortieren-Fehler
Andreas

Hallo Alex,
wenn Du vor die Zeile in der Tabelle2 sortiert werden soll folgendes schreibst, funktioniert's.
Sheets("Tabelle2").Select
Gruß,
Andreas B.

AW: Sortieren-Fehler
Hajo_Zi

Hallo Andreas,
nicht ganz, durch .Range bezieht es sich imer noch auf With Sheets("Tabelle1"), der Punkt müßte gelöscht werden.
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden sollte.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) – dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: „Das mache ich später“ ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an: [url=http://hajo-excel.de/chCounter3/getfile.php?id=61]mit und ohne select[/url] Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.
Gruß Hajo

AW: Sortieren-Fehler
Alex

Hallo,
danke für eure Antworten.
Passt das so mit dem Punkt von Hajo?


Sub sortierendrsa()
Sheets("Tabelle2").Unprotect "red13"
With Sheets("Tabelle1")
.Unprotect "red13"
.Range("A1:A5").Copy
Sheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlPasteValues
.Range("A1:C5").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess
Sheets("Tabelle2").Select
Sheets("Tabelle2").Range("A1:C5").Sort Key1:=.Range("A1"), Order1:=xlAscending,  _
Header:=xlGuess
.Protect "red13"
Sheets("Tabelle2").Protect "red13"
End With
End Sub


Andreas,
bei mir klappts trotzdem (Sheets("Tabelle2").Select) nicht.
Er meldet Fehler : 400
gruss
Alex

AW: Sortieren-Fehler
Hajo_Zi

Hallo Alex,
nei falls Tabelle2 sortiert werden soll.


Option Explicit
Sub sortierendrsa()
With Sheets("Tabelle1")
.Unprotect "red13"
.Range("A1:A5").Copy
.Protect "red13"
End With
With Sheets("Tabelle2")
.Unprotect "red13"
.Range("A1").PasteSpecial Paste:=xlPasteValues
.Range("A1:C5").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess
.Protect "red13"
End With
Application.CutCopyMode = False
End Sub


Gruß Hajo

AW: Sortieren-Fehler
Alex

Hallo Hajo,
sorry, aber Fehler: 400
Desweiteren muss noch Tabelle1 sortiert werden.
Sag mal, ich hab den Code doch an den richtigen Ort geschrieben (in VBA, Tabelle1), oder?
gruss
Alex

AW: Sortieren-Fehler
Hajo_Zi

Hallo Alex,
ich baue Dateien nicht nach, die Zeit hat jemand schon investiert.
Warum ist der Code unter der Tabelle, das ist doch ein Makro was im ein Modul gehört. Das beide Tabelle sortiert werden sollen habe ich wohl überlesen.


Option Explicit
Sub sortierendrsa()
Dim WsT1 As Worksheet
Dim WsT2 As Worksheet
Set WsT1 = Worksheets("Tabelle1")
Set WsT2 = Worksheets("Tabelle2")
WsT1.Unprotect "red13"
WsT2.Unprotect "red13"
WsT1.Range("A1:A5").Copy
WsT2.Range("A1").PasteSpecial Paste:=xlPasteValues
WsT1.Range("A1:C5").Sort Key1:=WsT1.Range("A1"), Order1:=xlAscending, Header:=xlGuess
WsT2.Range("A1:C5").Sort Key1:=WsT2.Range("A1"), Order1:=xlAscending, Header:=xlGuess
WsT1.Protect "red13"
WsT2.Protect "red13"
Application.CutCopyMode = False
Set WsT1 = Nothing
Set WsT2 = Nothing
End Sub


Gruß Hajo

Erledigt, danke
Alex

Hallo Hajo,
natürlich heisst das Modul, meinte ich auch.
Dein Code machts jetzt, Danke für deine Hilfe.
Weiss auch nicht warum meiner nicht ging.
gruss
Alex