Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
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
Inhaltsverzeichnis

VBA - bitte um Korrektur

VBA - bitte um Korrektur
14.12.2016 17:50:11
Fred
Hallo Excel Profis,
nach vielen Tagen des Einlesens hier im Forum / Bereich VBA schreibe ich selbst "einfache" Codes. Manchmal funzt es sofort, ein anderesmal erst nach so einer Art "Advents-Basteln".
Heute Abend stehe ich auf dem Schlauch.
Ein in einer anderen Mappe zu kopierender Bereich
 With bk.Worksheets("Liste1")
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, .UsedRange. _
Columns.Count))
'meineQuelle.Copy
End With

kopiert ab der 2. Zeile / Spalte "A" bis zum letzten Eintrag im gesammten Blatt.
Meine Frage:
Wie begrenze ich den zu kopierenden Bereich, so dass von "A2" ab bis zu letzten beschriebenen Zelle bis Spalte "C" kopiert wird?
Gruß
Fred

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - bitte um Korrektur
14.12.2016 17:55:07
Hajo_Zi
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 3))

Dank an Hajo
14.12.2016 18:11:31
Fred
Hallo Hajo_Zi,
.. und manchmal erwartet man von den Antworten viel komplexeres.
Deine Korrektur passt!
Danke für die Aufmerksamkeit und Unterstützung!
mfG
Fred
AW: VBA - bitte um Korrektur
14.12.2016 18:00:12
Werner
Hallo Fred,
With bk.Worksheets("Liste1")
Dim loLetzte AS Long
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range(.Cells(2, 1), .Cells(loLetzte, 2)).Copy
End With
Gruß Werner
AW: Uups, soll ja bis C
14.12.2016 18:03:15
Werner
Hallo Fred,
dann natürlich so
With bk.Worksheets("Liste1")
Dim loLetzte AS Long
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
.Range(.Cells(2, 1), .Cells(loLetzte, 3)).Copy
End With
Gruß Werner
Anzeige
Nachtrag
14.12.2016 18:53:44
Fred
Hallo Werner,
Das Engagement der Wissenden hier im Forum ist einmalig. Ohne euch würde Excel &Co –wenn überhaupt- nur halb so viel Spaß machen. Ohne „schnelle“ Erfolgserlebnisse lernt es sich m.E. langsamer und Resignation schleicht sich schneller in das Selbststudium.
Was mich an VBA immer noch ein bißchen „Wahnsinnig“ macht ist, das bei gleichen Ergebnis „viele Handschriften“ möglich sind. Ich habe von VBA –von Tuten und Blasen- keine Ahnung, allerdings kann ich so manchen „Code-Stil“ schon dem, oder dem zuordnen :-)
Vielleicht werde ich eines Tages auch hier mit „meinem Stil einen Code zu schreiben“ Antworten geben können.
PS: Ohne alle anderen abzuwerten; der Stil von Michael (migre) gefällt mir am besten.
Nochmals herzlichen Dank an alle hier Mitwirkenden,- dies Excel-Forum ist in Deutschland die NR 1
Mit freundlichen Gruß
Fred
Anzeige
AW: hier haste noch zwei ;-)
14.12.2016 18:59:49
hary
Moin Fred
Geht auch
.Range ("A2:C" & .UsedRange.Row)

auch so
.Range("A2").Resize(.UsedRange.Row - 1, 3)

Statt .Range("A2") kannst auch .Cells(2,1) nehmen
und da gibt es noch mehr.
gruss hary
AW: hier haste noch zwei ;-)
14.12.2016 19:15:45
Fred
Jo, Hary
der Wahnsinn ist wohl grenzenlos :-)
... ich setze zum Ende meines Codes nochmals

With Mappe.Worksheets("Liste1")
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).ClearContents
End With

der Inhalt wird auch gelöscht, allerdings kommt die Fehlermeldung: "Objekt erforderlich" was ich nicht zuordnen kann.
Woran liegt das Hary ?
Gruß
Fred
Anzeige
AW: hier haste noch zwei ;-)
14.12.2016 20:09:07
Fred
so,
mit

With Mappe.Worksheets("Liste1") ' löscht den bereich "a2:h" letzte zeile
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8))
.Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).ClearContents
End With
wird auch ohne "Fehler 424" gelöscht
AW: hier haste noch zwei ;-)
14.12.2016 20:46:08
Gerd
Hallo Fred,
das liegt zumindest teilweise an dem, was du nicht gezeigt hast.
Option Explicit
Sub dddd()
Dim Mappe As Workbook, meineQuelle As Range
Set Mappe = ActiveWorkbook
With Mappe.Worksheets("Liste")
Set meineQuelle = .UsedRange
Set meineQuelle = .Range(.Cells(2, 1), .Cells(meineQuelle.Rows.Count + 1, 8))
meineQuelle.ClearContents
End With
End Sub
P.S. Welchen Nutzen hat deine neue Zeile mit "Set meineQuelle ..." ?
Gruß Gerd
Anzeige
AW: hier haste noch zwei ;-)
14.12.2016 20:47:56
Werner
Hallo Fred,
stellt sich nur die Frage, weshalb du ein Range-Objekt erstellst
With Mappe.Worksheets("Liste1") ' löscht den bereich "a2:h" letzte zeile
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8))
.Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).ClearContents
End With
das du, zumindest im gezeigten Code nicht verwendest.
Wenn du einen bestimmten Bereich löschen willst dann reicht
With Mappe.Worksheets("Liste1") ' löscht den bereich "a2:h" letzte zeile
.Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).ClearContents
End With
Gruß Werner
Anzeige
AW: hier haste noch zwei ;-)
14.12.2016 21:50:35
Fred
Hallo Werner,
hast natürlich recht.
Ich war der Meinung, dass ich auch diese Variante geschrieben habe, es aber trotzdem zu "424" kam.
Ich habe es nochmals probiert und nu funzt es mit deinem Code.
Danke für den Hinweis!
Gruß
Fred
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
14.12.2016 22:10:48
Werner
AW:Noch eine Erklaerung
15.12.2016 07:42:49
hary
Moin Fred
Mit "Set meineQuelle" erstellst du ein RangeObjekt.
Das heisst das im du im weiterem Code das Objekt „meineQuelle“ nutzt.
Bsp.
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8))
Jetzt kannst du "meineQuelle" zum loeschen nutzen.
meineQuelle.ClearContents
anstatt
.Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8)).ClearContents
Spart also eine Menge schreiberei, sonst musst du immer .Range(xxxxxxx) davor schreiben.
Set meineQuelle = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count + 1, 8))
meineQuelle.ClearContents ‘---Bereich Inhalt loeschen
meineQuelle.Interior.Color = VbRed ‘---Bereich farbigmachen
meineQuelle.copy ‘---Bereich kopieren
usw.
Daher kommt der Fehler bei ClearContents, bei der Erstellung des Objekts. Das geht nicht.
gruss hary
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige