Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makroprobleme

Makroprobleme
03.06.2004 10:18:27
Andreas
Hallo zusammen,
ich habe ein Makro aufgezeichnet. Es soll Datenreihen einfach nur sortieren(von A => Z)und es hat auch funktioniert. In den ersten 3 Tabellenblättern, allerdings nicht in den letzten 4 Tabellenblättern. Ich schicke den Code mit, aber es dürfte nichts falsch sein. Ist ein Makro und ich habe nur den Tabellennamen ausgetauscht. Bin für Hilfe sehr dankbar!!!

Private Sub Workbook_Open()
'Schützt die ersten vier Zeilen, so dass beim Kopieren der ToDo´s
'diese nicht als erste freie Zeile angesehen werden
Sheets("UG").ScrollArea = "A$5:$IV$65536"
Sheets("TS").ScrollArea = "A$5:$IV$65536"
Sheets("ZK").ScrollArea = "A$1:$IV$65536"
Sheets("Dringende Termine").ScrollArea = "A$2:$IV$65536"
Sheets("Aktuelle Aufgaben").ScrollArea = "A$2:$IV$65536"
Sheets("Stetige Aufgaben").ScrollArea = "A$2:$IV$65536"
Sheets("Erledigte Aufgaben").ScrollArea = "A$2:$IV$65536"
Sheets("Ablage").ScrollArea = "A$2:$IV$65536"
Sheets("Ablage").Select
Sheets("Ablage").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("UG").Select
Sheets("UG").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("TS").Select
Sheets("TS").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("ZK").Select
Sheets("ZK").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("Erledigte Aufgaben").Select
Sheets("Erledigte Aufgaben").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("Dringende Termine").Select
Sheets("Dringende Termine").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("Aktuelle Aufgaben").Select
Sheets("Aktuelle Aufgaben").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("Stetige Aufgaben").Select
Sheets("Stetige Aufgaben").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Sheets("UG").Select
Sheets("UG").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
End Sub

MFG Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachfragen
Martin
Hallo Andreas,
was ist denn der Fehler? Läuft das Makro durch oder erhältst Du eine Fehlermeldung? Wenn ja, welche? Wenn nein, was ist dann falsch? Hast Du evtl. Leerzeilen inde letzten 4 Tabellen?
Gruß
Martin Beck
AW: Nachfragen
03.06.2004 10:43:04
Andreas
Hallo Martin,
Danke für deine Antwort. Also das Makro läuft bei den ersten 3 Tab.blätter, aber bei den anderen 4 Tab. (letzten 4 im Code nicht!)! Er schmeißt keine Fehlermeldung raus, gar nichts! Sieht so aus als funktioniert es. Aber sortiert ist nichts! Ab und zu, unregelmäßig, kann ich dann nicht mehr auf die erste Zeile zugreifen, der ScrollUp funktioniert nur bis zur Zeile 2!!! Woran liegt das?
In den ersten 3 Tab.blättern sind oben 4 Buttons (Zeile 1-3), dann kommt die Tabellenbezeichnung (Name, Aufgabe, etc) und ab der fünften Zeile die eigentlichen Daten! Bei den letzten 4 Tab.blättern ist in der ersten Zeile die Tabellenbezeichnung(Name, Aufgabe) und danachin der zweiten die eigentlichen Daten! Sonst sind Tabellnbätter und Code identisch! Es funktioniert aber auch nicht, wenn ich es in eine Prozedur des Commandbuttons einfüge: Dieser Button kopiert Daten, danach sollte er sie in allen Blättern sortieren (bis auf eines), aber da schmeißt er mir ne Fehlermeldung raus und zwar in dem Moment, wenn er die Funktion Sortieren aus dem MAkro ausführen will!
Ergibt das irgendeinen Sinn? Bin mittlerweile ziemlich frustriert. Hoffe, du kannst mir weiterhelfen!!!
MFG Andreas
Anzeige
AW: Nachfragen
03.06.2004 10:44:05
Andreas
Hallo Martin,
Danke für deine Antwort. Also das Makro läuft bei den ersten 3 Tab.blätter, aber bei den anderen 4 Tab. (letzten 4 im Code nicht!)! Er schmeißt keine Fehlermeldung raus, gar nichts! Sieht so aus als funktioniert es. Aber sortiert ist nichts! Ab und zu, unregelmäßig, kann ich dann nicht mehr auf die erste Zeile zugreifen, der ScrollUp funktioniert nur bis zur Zeile 2!!! Woran liegt das?
In den ersten 3 Tab.blättern sind oben 4 Buttons (Zeile 1-3), dann kommt die Tabellenbezeichnung (Name, Aufgabe, etc) und ab der fünften Zeile die eigentlichen Daten! Bei den letzten 4 Tab.blättern ist in der ersten Zeile die Tabellenbezeichnung(Name, Aufgabe) und danachin der zweiten die eigentlichen Daten! Sonst sind Tabellnbätter und Code identisch! Es funktioniert aber auch nicht, wenn ich es in eine Prozedur des Commandbuttons einfüge: Dieser Button kopiert Daten, danach sollte er sie in allen Blättern sortieren (bis auf eines), aber da schmeißt er mir ne Fehlermeldung raus und zwar in dem Moment, wenn er die Funktion Sortieren aus dem MAkro ausführen will!
Ergibt das irgendeinen Sinn? Bin mittlerweile ziemlich frustriert. Hoffe, du kannst mir weiterhelfen!!!
MFG Andreas
Anzeige
AW: Vorschlag
Martin
Hallo Andreas,
ungetestet: Ersetze mal in den 4 Codes die Zeile
Sheets("ZK").Range("A5:J103").Select
durch
Sheets("ZK").Range("A2:J103").Select
Gruß
Martin Beck
AW: Vorschlag
03.06.2004 11:27:36
Andreas
Hey Martin, klappt super! Manchmal sieht man den Wald vor lauter Bäumen nicht! EIne Frage habe ich aber noch:
Ich möchte das auch noch in eine Prozedur einbetten:
Beim Drücken eines Commandbuttons werden erst alle alten gelöscht (funktioniert) und dann die neuen, vielleicht veränderten Datenreihen wieder rein kopiert. Jetzt sind sie nicht geordnet. Ich wollte das in die Funktion einbetten. ABer er gibt ne Fehlermeldung an der Stelle wo er die Funktion sortieren ausführt! Kannst du mir da vielleicht weiter helfen?
'Kopiert alle Reihen im "UG"-Sheet, die als Verantwortlicher UG haben und ein entsprechenden Stand "erledigt" besitzen, in den Sheet "Erledigte Aufgaben" und sucht dort nach der ersten freien Zeile!
p = 1
For d = 4 To 103
If Sheets("UG").Cells(d, 9).Value = "erledigt" And Sheets("UG").Cells(d, 2).Value = "UG" Then

Do
p = p + 1
Loop Until IsEmpty(Sheets("Erledigte Aufgaben").Cells(p, 7))
!!!!!!!!!! Ich würde das Makro hier einfügen!!!!!!!!!! Aber woran liegt dann der Fehler?
Rows(d).Copy Destination:=Sheets("Erledigte Aufgaben").Cells(p, 1)
End If
Next d
Sheets("Erledigte Aufgaben").Select
Sheets("Erledigte Aufgaben").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Makro:
Sheets("Aktuelle Aufgaben").Select
Sheets("Aktuelle Aufgaben").Range("A2:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select

Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Anzeige
AW: noch mehr Nachfragen
Martin
Hallo Andreas,
mit Deinem Code werden Daten aus der Tabelle "UG" (nehme ich mal an) in die Tabelle "Erledigte Aufgaben" kopiert. Das Sortiermakro bezieht sich aber auf die Tabelle "Aktuelle Aufgaben". Wieso willst Du denn innnerhalb des Kopiermakros in einer anderen Tabelle neu sortieren, und das auch noch bei jedem For-Schleifendurchlauf? Mir ist da der Zusammenhang nicht klar.
Poste nochmal den kompletten Code und beschreibe, was er genau leisten soll und welche Fehlermeldung wann (in welcher Codezeile) kommt.
Gruß
Martin Beck
AW: noch mehr Nachfragen
03.06.2004 12:17:03
Andreas
Hey Martin,
mit Hilfe der For-Schleife werden alle 100 Datenreihe auf übereinstimmung untersucht. Falls eine Übereinstimmung gefunden wurde, wird diese Datenreihe in z.B: aktuelle Aufgaben in die erste freie Zeile kopiert. Dadurch verändert sich in "aktuelle Aufgaben die Reihenfolge. Aus diesem Grund soll er nach dem Kopieren das Tabellenblatt sortieren! Kann ich vielleicht im Tabellenblatt Aktuelle Aufgaben das Makro platzieren, das automatisch ausgeführt wird, sobald das Tabellenblatt aktiviert wird? Ähnlich dem Workbook_Open() z.B. ActiveSheet_Activate()Wäre glaube ich die infachste und sauberste Lösung? Geht das?
Vielen Dank´im Voraus!!!

Private Sub CommandButton1_Click()
'Sucht alle UG aus löscht und macht Platz für neue
Const Suchspalte = 2
Dim lz As Long, z As Long
Dim sh As Worksheet
For Each sh In Sheets(Array("Dringende Termine", "Aktuelle Aufgaben", "Stetige Aufgaben", "Erledigte Aufgaben", "TS", "ZK"))
With sh
lz = .Cells(65536, Suchspalte).End(xlUp).Row
For z = lz To 1 Step -1
If .Cells(z, Suchspalte) = "UG" Then
.Cells(z, 2).EntireRow.Delete
End If
Next z
End With
Next sh
' Zurücksetzen von Farbe, Größe und Dicke in den Ausgangszustand
Sheets("UG").Range("A5:J103").Select
Selection.Font.Bold = True
Selection.Font.Bold = False
Selection.Font.ColorIndex = 0
Selection.Font.Size = 10
' Priorität Makro, sortiert nach der Prio und sortiert die wichtigsten Aufgaben nach vorne
' Makro am 05.05.2004 von Bonn.Prakt2-MVW24 aufgezeichnet
Sheets("UG").Select
Sheets("UG").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
'Variablen deklarieren (Erste Reihe Variable der Reihen, damit alle
'Reihen unabhängig durchsucht werden können!
Dim a As Long, b As Long, c As Long, d As Long, e As Long
Dim n As Long, m As Long, o As Long, p As Long, q As Long, r As Long
'Kopiert alle Reihen im "UG"-Sheet, die als Verantwortlicher UG haben und ein entsprechenden
'Stand "offen" besitzen, in den Sheet "Aktuelle Aufgaben" und sucht dort nach der ersten
'freien Zeile!
m = 1
For b = 4 To 103
If Sheets("UG").Cells(b, 9).Value = "offen" And Sheets("UG").Cells(b, 2).Value = "UG" Then
Do
m = m + 1
Loop Until IsEmpty(Sheets("Aktuelle Aufgaben").Cells(m, 2))
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Rows(b).Copy Destination:=Sheets("Aktuelle Aufgaben").Cells(m, 1)
End If
Next b
Sheets("Aktuelle Aufgaben").Select
Sheets("Aktuelle Aufgaben").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Sheets("UG").Select
'Kopiert alle Reihen im "UG"-Sheet, die als Verantwortlicher UG haben und ein entsprechenden
'Stand "erledigt" besitzen, in den Sheet "Erledigte Aufgaben" und sucht dort nach der ersten
'freien Zeile!
p = 1
For d = 4 To 103
If Sheets("UG").Cells(d, 9).Value = "erledigt" And Sheets("UG").Cells(d, 2).Value = "UG" Then
Do
p = p + 1
Loop Until IsEmpty(Sheets("Erledigte Aufgaben").Cells(p, 7))
Rows(d).Copy Destination:=Sheets("Erledigte Aufgaben").Cells(p, 1)
End If
Next d
Sheets("Erledigte Aufgaben").Select
Sheets("Erledigte Aufgaben").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
'Mit Hilfe der Select-Funktion sortiert das Programm alle Aufgaben, an denen weitere
'Mitarbeiter beteiligt sind automatisch in Ihre ToDo-Liste zu. Aufgaben, geben nur die Personen
'ein, die Verantwortlicher sind
Cells.Interior.ColorIndex = xlNone
q = 4
r = 4
For e = 4 To 103
Select Case Sheets("UG").Cells(e, 3).Value
Case Is = "TS"
Do
q = q + 1
Loop Until IsEmpty(Sheets("TS").Cells(q, 7))
Rows(e).Copy Destination:=Sheets("TS").Cells(q, 1)
Case Is = "ZK"
Do
r = r + 1
Loop Until IsEmpty(Sheets("ZK").Cells(r, 7))
Rows(e).Copy Destination:=Sheets("ZK").Cells(r, 1)
End Select
Next e
'Setzt in diesen Tab.blättern den Cursor an die erste Stelle
Sheets("ZK").Select
Sheets("ZK").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Sheets("TS").Select
Sheets("TS").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
Sheets("UG").Select
Sheets("UG").Cells(65536, 1).End(xlUp).Offset(1, 0).Select
End Sub

Anzeige
AW: Vorschlag
Martin
Hallo Andreas,
verstehe ich das richtig: Wenn das Tabellenblatt "Aktuelle Aufgaben" aktiviert wird, soll in dieser Tabelle jeweils sortiert werden?
Weise der Tabelle "Aktuelle Aufgaben" (Rechtsclick auf den Tabellenreiter - Code anzeigen) folgenden Code zu:

Private Sub Worksheet_Activate()
Range("A2:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
End Sub

Gruß
Martin Beck
P.S. Schau Dir mal hier auf dem Server die xlBasics zu Selektieren an.
Anzeige
AW: Vorschlag
03.06.2004 12:56:34
Andreas
Ja genau richtig, müsste es so funktionieren? Ich werd es nchher mal ausprobieren.
Super Vielen Dank!!!!
;-)
MFG Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige