Anzeige
Archiv - Navigation
728to732
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
728to732
728to732
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mittels VBA letzte benutzte Zeile erfassen und Ber

Mittels VBA letzte benutzte Zeile erfassen und Ber
06.02.2006 17:23:00
Frank
Hallo,
ich möchte in einem Formular die Letzte benutzte Zeile ermitteln. Dann möchte ich den Bereich ab Zeile 8 (Zelle A8) bis einschließlich der letzten ermittelten benutzen Zeile in das Tabellenblatt "Zusammenfassung" kopieren. In dem Tabellenblatt "Zusammenfassung" sollte dieser Kopie unten an die nächste freie Position angehängt werden, so dass sich diese Zusammenfassung täglich verlängert.
Ich kriege es einfach nicht hin.
Grüße und Danke im voraus

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

Betreff
Datum
Anwender
Anzeige
AW: Mittels VBA letzte benutzte Zeile erfassen und Ber
06.02.2006 17:47:59
et999
Hi Frank,
könnte so klappen:

Sub Kopieren()
Dim Z As Integer
Z = ActiveSheet.UsedRange.Rows.Count
Range(Cells(8, 1), Cells(Z, 1)).EntireRow.Copy
Z = Sheets("Zusammenfassung").UsedRange.Rows.Count
Sheets("Zusammenfassung").Select
Cells(Z + 1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

Gruß
Uwe
(:o)
Zeilen = 65536, Integer = 32767
06.02.2006 17:59:55
{Boris}
Hi Uwe,
...das kann schon mal schief gehen ;-)
Grüße Boris
Korrektur!!!: Dim Z As Long
06.02.2006 18:06:36
et999
Hi,
uuuppppppps, sorry, Boris hat natürlich recht, ich habe meine ZeilenVariablen bis jetzt immer als Long deklariert. Werde wohl langsam alt und schusselig. Also so muss es sein:

Sub Kopieren()
Dim Z As Long
Z = ActiveSheet.UsedRange.Rows.Count
Range(Cells(8, 1), Cells(Z, 1)).EntireRow.Copy
Z = Sheets("Zusammenfassung").UsedRange.Rows.Count
Sheets("Zusammenfassung").Select
Cells(Z + 1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

Anzeige
AW: Korrektur!!!: Dim Z As Long
06.02.2006 18:16:54
Frank
Hallo Uwe,
Vielen Dank, funktioniert fast so wie ich möchte. Allerdings werden irgendwie zuviele Zeilen kopiert oder eingefügt. Wenn ich zum Beispiel in der ursprünglichen tabelle 5-6 Zeilen ausfülle kopiert der diese rüber in die Zusammenfassung. Beim nächsten neuen Blatt was ich anlege un nochmal kopiere fügt er aber nicht sofort an sondern lässt sehr viele Zeilen frei, so dass ich immer grosse Lücken habe.
wie kann´s.
Anbei der ganze Code.

Sub Schaltfläche3_BeiKlick()
Dim strMsg As String, strtitel As String
Dim strvbantwort As Integer
strMsg = "Möchten Sie wirklich ein neues Tabellenblatt anlegen?"
strtitel = "Neues Tabellenblatt?"
strvbantwort = MsgBox(strMsg, vbYesNo + vbDefaultButton1, strtitel)
If strvbantwort = vbYes Then
Workbooks("Tonnagennachweis Wareneingang.xls").Save
Dim Z As Long
Z = ActiveSheet.UsedRange.Rows.Count
Range(Cells(8, 1), Cells(Z, 1)).EntireRow.Copy
Z = Sheets("Zusammenfassung").UsedRange.Rows.Count
Sheets("Zusammenfassung").Select
Cells(Z + 1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Dim varWS As Variant
varWS = InputBox("Bitte geben Sie das heutige Datum und Ihr Kürzel ein")
Worksheets.Add.Name = varWS
Worksheets("Start").Range("a1:l45").Copy _
Worksheets(varWS).Range("a1")
Else
MsgBox ("Es wird kein Neues Blatt angelegt")
End If
End Sub

Anzeige
AW: Korrektur!!!: Dim Z As Long
06.02.2006 18:21:27
Guido
Hi,
UsedRange ist aufgrund der Unzuverlässigkeit nicht geeignet, die letzten belegten Zellen
zu ermitteln, außerdem ist ein Logikfehler in dem Code.
mfg Guido
AW: Korrektur!!!: Dim Z As Long
06.02.2006 18:44:45
et999
Hi Frank,
ist wohl nich ganz mein Tag heute.
Das Problem ist, dass mit ...UsedRange.. immer der gesamte benutzte Bereich abgefragt und somit auch kopiert wird. Wenn in der Ausgangstabelle irgendwann mal Zellen gelöscht wurden kopiert er die leeren Zeilen mit rüber und hängt dann beim nächsten Mal ab da die neuen Daten an. Das kann man beheben indem man die leeren Zellen komplett löscht, also nicht nur den Inhalt. Ist aber zugegebenermaßen etwas kritisch. Deshalb hier eine Alternative. Dazu muss aber sicher sein, dass in der letzten benutzen Zeile im Tabellenblatt Zusammenfassung in der Spalte A etwas steht, er sucht nämlich in dieser Spalte nach dem letzten Eintrag:

Sub Kopieren()
Dim Z As Long
Z = ActiveSheet.UsedRange.Rows.Count
Range(Cells(8, 1), Cells(Z, 1)).EntireRow.Copy
Sheets("Zusammenfassung").Select
Range("A65536").End(xlUp).Select
ActiveCell.Offset(1, 0).PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
End Sub

Ich hoffe ich erzeuge nicht zuviel Chaos, vielleicht kann jemand hier im Forum Dir besser helfen, der nicht selbst noch ein Anfänger ist, so wie ich.
Gruß
Uwe
(:o)
Anzeige
AW: Hi Guido. Welcher Logigfeheler?
06.02.2006 18:58:46
et999
Hi Guido,
wie ich gerade schon schrieb: ist nicht ganz mein Tag. Verräts Du welcher Logigfehler in meinem Code zusätzlich noch ist?
Ich lerne noch und zur Zeit am häufigsten aus meinen Fehlern und durch häufige Besuche in diesem Formum hier.
Gruß
Uwe
(:O)
AW: Hi Guido. Welcher Logigfeheler?
07.02.2006 09:59:12
Frank
Hallo Uwe,
es funktioniert. Danke. Von wegen Anfänger. Ist doch Super. Ich habe mir auch gerade das Handbuch von MS zur Excel Programmierung gekauft. Möchte das jetzt auch lernen. Ist schwer. Gibt es noch andere gute Literatur zum Erlernen von VBA ?
Grüße
Frank
AW: Hi Guido. Welcher Logigfeheler?
07.02.2006 13:12:43
et999
Hi Frank,
ich lerne mit Excel-VBA von Bernd Held, Verlag Markt+Technik. Da gibt es glaub ich auch noch sowas wie Excel-VBA in 14 Tagen, das nicht ganz so erschreckend dick ist (;-).
Ich find es sehr gut, ist vor allen Dingen ziemlich praxisnah mit vielen brauchbaren Beispielen und nicht bloße Theorie.
Ich würd's empfehlen.
Gruß
Uwe
(:o)
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige