Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kopieren und Sortieren von Zeilen

Kopieren und Sortieren von Zeilen
26.03.2007 12:12:21
Zeilen
Hallo zusammen,
ich möchte gerne aus einer Tabelle Zeilen kopieren, wenn er in einer Spalte eine 5 findet. Zuvor soll er die Tabelle, in der die Zeilen hineinkopiert komplett löschen (damit keine doppelten Zeilen vorhanden sind). Dann einfügen der kopierten Zeilen und dann soll er die Zeilen sortieren (Aufsteigend) und die Zellen formatieren.
Aber die Funktionen Löschen, Sortieren und Formatieren funktionieren nicht, liegt es an der fehlenden Sheet-Bezeichnung? Wie würde man das einfügen?
Hier der Code von mir? Aus Makro´s zusammengestellt. Vielen Dank für eure Hilfe im Voraus.

Sub Makro2()
'Löschung der Tabelle HG5'
Rows("3:10000").Select
Selection.Delete Shift:=xlUp
Range("A1:C1").Select
End Sub

'Kopieren aller Zeilen mit HG5'

Sub Makro1()
Dim ende As Long
ende = Cells(65536, 1).End(xlUp).Row
For i = ende To 3 Step -1
If Cells(i, 5) = "5" Then
Rows(i).Copy
Sheets("HG5").Cells(65536, 1).End(xlUp).Offset(1, 0).PasteSpecial
End If
Next
End Sub

Sub Makro3()
'Sortieren nach Spalten A, B, C ab Zeile 3'
Rows("2:2").Select
ActiveWindow.SmallScroll Down:=-3
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:=Range("B3") _
, Order2:=xlAscending, Key3:=Range("C3"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub


Sub Makro4()
' Formatierung der Schriftgröße 8 und Zentrierung aller Zellen und Zeilenumbruch für alle  _
Zellen'
Rows("3:10000").Select
With Selection.Font
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
With Selection
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
ActiveWindow.Zoom = 90
ActiveWindow.SmallScroll Down:=-21
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Code für Makro1 und Makro2
26.03.2007 12:29:45
mpb
Hallo Andreas,
ich gehe mal davon aus, dass die Tabelle aktiv ist, aus der Zellen kopiert werden sollen, und dass die Zieltabelle "HG5" heißt.

Sub Makro2()
'Löschung der Tabelle HG5'
Worksheets("HG5").Rows("3:10000").Delete Shift:=xlUp
End Sub

'Kopieren aller Zeilen mit HG5'

Sub Makro1()
Dim ende As Long
ende = Cells(65536, 1).End(xlUp).Row
x = 3
For i = 3 To ende
If Cells(i, 5) = "5" Then
Rows(i).Copy Destination:=Worksheets("HG5").Cells(x, 1)
x = x + 1
End If
Next
End Sub
Zur Sortierung: Was steht in HG5 in den ersten beiden Zeilen, wenn erst ab Zeile 3 sortiert werden soll?
Gruß
Martin
Anzeige
AW: Code für Makro1 und Makro2
26.03.2007 12:42:29
Andreas
Hallo Martin,
in den ersten beiden Zeilen stehen die ganz normalen Spaltenbezeichnung wie zum Beispiel Spalte A:
Zeile 1: Tabelle Auwertung
Zeile 2: Lieferant: Nr: usw:
Zeile 3: Barol
Zeile 4: Arfust
Zeile ff: usw.
AW: Code für Makro1 und Makro2
26.03.2007 13:16:36
mpb
Hallo Andreas,
ich hoffe, so funktioniert es:

Sub Makro3()
'Sortieren nach Spalten A, B, C ab Zeile 3'
With Worksheets("HG5")
.Range("A2").Sort Key1:=.Range("A3"), Order1:=xlAscending, Key2:=.Range("B3") _
, Order2:=xlAscending, Key3:=.Range("C3"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub

Sub Makro4()
' Formatierung der Schriftgröße 8 und Zentrierung aller Zellen und Zeilenumbruch für alle _
Zellen'
Worksheets("HG5").Rows("3:10000").Font.Size = 8
With Worksheets("HG5").Rows("3:10000")
.VerticalAlignment = xlCenter
.WrapText = True
End With
ActiveWindow.Zoom = 90
ActiveWindow.SmallScroll Down:=-21
End Sub
Gruß
Martin
Anzeige
AW: Code für Makro1 und Makro2
26.03.2007 13:51:24
Andreas
Hallo Martin,
er sagt mir Laufzeitfehler 1004 Für diese Funktion müssen alle verbundenen Zellen dieselbe Größe haben.
Fehler stoppt in der letzten Zeile bei: xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Ich habe aber nur in der ersten Zeile der Tabelle verbundene Zellen?
AW: Code für Makro1 und Makro2
26.03.2007 14:01:00
mpb
Hallo Andreas,
verbundene Zellen rausschmeissen (braucht kein Mensch) oder eine leere Zeile 2 einfügen (ohne verbundene Zellen), dann mußt Du aber alle Referenzen auf Zeile(n)nummern größer als 1 in den Makros anpassen.
Gruß
Martin
AW: Code für Makro1 und Makro2
26.03.2007 14:09:00
Andreas
Hallo Martin,
die Zeile 2 hat aber keine verbundenen Zellen, nur Zeile 1 und er soll doch ab Zeile 3 sortieren? Benötige die verbundene Zelle als Textfeld
Anzeige
AW: Code für Makro1 und Makro2
26.03.2007 14:15:53
mpb
Hallo Andreas,
in Zeile 2 (alt) stehen doch die Spaltenüberschriften und die musst Du von Zeile 1 abtrennen, und das erreichst Du, wenn Du eine neue leere Zeile 2 einfügst.
Was soll "Benötige die verbundene Zelle als Textfeld" bedeuten. Ich rate mal: Du benutzt die verbundene Zelle in Zeile 1, um eine Tabellenüberschrift über Spalten zu zentrieren. Wenn ja, das geht auch ohne die Zellen zu verbinden. Falls nein, welchen Zweck haben die verbundenen Zellen?
Gruß
Martin
AW: Code für Makro1 und Makro2
26.03.2007 14:22:18
Andreas
In Zeile 1 steht Kosten, in Zeile 2 Lieferant, Nr. etc, Zeile 3 kommen dann die einzelnen Datensätze
Aber ich denke es liegt an der Schaltfläche und den zugewiesenen Makro´s. Führe ich die 4 Makro´s im VB Editor einzeln nacheinander per Hand aus, dann funktionieren diese ohne Probleme. Nur wenn ich den Button nutze, dann kopiert er macht aber sonst nichts. Schaltfläche neu machen und Makro´s neu zuweisen oder muss man eine bestimmte Reihenfolge einhalten?
Anzeige
AW: Code für Makro1 und Makro2
26.03.2007 14:27:35
Andreas
Hallo Martin
hab es hinbekommen. Hatte in jedem der 4 Makro´s ja Sub und End verwendet, wenn ich alle in eins packe, dann funktioniert es auch mit nur der Schaltfläche. Vielen vielen Dank für deine Hilfe.
Eine Frage habe ich noch! Kann man das Ausführen entweder per Button machen oder beim Starten der Datei bzw. beim Speichern? Wie würde dafür der Code lauten?
Ereignisprozeduren
26.03.2007 14:36:00
mpb
Hallo Andreas,
nehmen wir mal an, Dein Makro hieße "MeinMakro".
Gehe mit ALT-F11 in die Entwicklungsumgebung (dahin, wo der Code steht) und doppelklicke im Projektexplorer auf "DieseArbeitsmappe". Im Contentbereich hast Du oben 2 Dropdownfelder. Aktiviere im linken "Workbook" und im rechten die gewünschten Ereignisse "Open" und "BeforeSave". Es erscheinen 2 Rumpfcodes, in die Du noch die Zeile
Call MeinMakro
einfügst.
Das Ergebnis sollte so aussehen:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call MeinMakro
End Sub


Private Sub Workbook_Open()
Call MeinMakro
End Sub
Gruß
Martin
Anzeige
AW: Ereignisprozeduren
26.03.2007 14:57:00
Andreas
Hallo Martin,
Zur Zeit steht da
Sub Schaltfläche1_BeiKlick
müsste also dann Call Schaltfläche1_BeiKlick machen oder?
AW: Ereignisprozeduren
26.03.2007 15:08:00
mpb
Hallo Andreas,
Du hattest gefragt, ob Dein Makro auch automatisch bei Öffnen und/oder Speichern der Datei ausgeführt werden kann, und das geht so, wie ich es beschrieben habe. Probier's doch einfach mal aus.
Wie man das Makro über eine Schaltfläche manuell startet, hattest Du doch schon selbst herausgefunden, deshalb verstehe ich Deine Nachfrage nicht.
Gruß
Martin
AW: Ereignisprozeduren
26.03.2007 16:05:00
Andreas
Hallo Martin,
hab es einfach mal ausprobiert:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Schaltfläche79_BeiKlick
End Sub


Private Sub Workbook_Open()
Call Schaltfläche79_BeiKlick
End Sub
Wenn ich denn Button drücke, dann läuft alles i.O., aber wenn ich speichern will, dann bricht er ab (Wie eben) mit Laufzeitfehler 1004 und möchte die verbundenen Zellen auflösen. Versteh nicht warum er das jetzt macht, er müsste doch nur das Makro ausführen?
Anzeige
AW: Ereignisprozeduren
26.03.2007 16:07:26
Andreas
Hallo Martin,
er meckert nur im Editor, in der Tabelle funktioniert es genau wie du beschrieben hast!!!
Vielen Dank.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige