Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1404to1408
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
Range Zuweising bei Variablen Spalten
29.01.2015 09:40:32
Sepp
Hallo Leute,
habe ein kleines VBA Dilemma, Ich arbeite an einem großem Makro, welches im speziellen Daten aus Tabellensheets, in ein anderes kopiert. Nun zu meinem Problem. Ich kann mit der Range Methode keine Spalten angeben, da diese Variabel sind. In etwa so:
'Alte Version, letzteZeile sucht letzte Zeile in test1
Dim test1, test2 As Worksheets
test1 = Sheets("Tabelle1")
test2 = Sheets("Tabelle2")
test1.Range("B:B" & letzteZeile).Copy Destination:=test2.Range("B2")
'neue Version:
Dim test1, test2 As Worksheets
test1 = Sheets("Tabelle1")
test2 = Sheets("Tabelle2")
Dim spalte As String
spalte = Eingabefenster.TextBox1.Value
test1.Range(spalte & letzteZeile).Copy Destination:=test2.Range("B2")
So, habe im Eingabefenster, welches als Pop-Up fungiert, eine TextBox, welche mit die Spaltenbelegung regelt. Kann mir jemand sagen, wie die Zuweisung im Range dazu heißt, wenn ich die komplette Spalte kopieren will?
Gruß Sepp
PS: Eine Zusatzvariable mit Range(..).EntireColumn.Select geht nicht

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range Zuweising bei Variablen Spalten
29.01.2015 10:04:23
Daniel
Hi
wenn du die komplette Spalte kopieren willst, muss der Text in Range lauten:
Spaltenbuchstabe-Doppelpunkt-Spaltenbuchstabe
dh Test1.Range("B:B").Copy
bzw für deinen Code: Test1.Range(Spalte & ":" & spalte).Copy

wenn du nur einen Teilbereich kopieren willst:
SpaltenbuchtstabeZeilennummer:SpaltenbuchstabeZeilennummer
dh Test1.Range("B2:B" & letzeZeile).Copy
wenn du aus dem Teilbereich eine ganze Spalte machen willst, dann geht das schon mit EntireColumn, aber ohne Select:
test1.Range(spalte & letzteZeile).EntireColumn.copy
beachte weiterhin, wenn du eine ganze Spalte kopiest,dann musst du sie in die erste Zeile einfügen, denn nur dann passt der eingefügte Bereich ins Tabellenblatt:
test1.Range(spalte & letzteZeile).EntireColumn.Copy Destination:=test2.Range("B1")
beachte weiterhin:
Dim test1, test2 As Worksheets
dimensioniert nur test2 als Worksheet, test1 wird Variant.
wenn auch test1 eine Worksheetvariable sein soll, musst du das auch angeben:
Dim test1 as Worksheet, test2 as Worksheet
Gruß Daniel

Anzeige
AW: Range Zuweising bei Variablen Spalten
29.01.2015 11:20:24
Sepp
Hi,
erstmal danke für deine zeitnahe Antwort.
Habe deine Methoden getestet, allerdings hat keine funktioniert.
So sieht mein letzter Versuch aus:
test1.Range(spalte &":"& spalte & letzeZeile).Copy Destination:=test2.Range("B2")
Beim Debuggen spuckt er mir immer Laufzeitfehler '1004' aus.
Die Methode 'Range' für das Objekt '_Worksheet' ist fehlgeschlagen.
Warum auch immer nimmt er die das Range nicht.
Kann man das ganze auch mit Cells darstellen?
Dim spalte As String
Dim spalte1 As Integer
spalte = Eingabefenster.TextBox1.Value
spalte1 = Columns(spalte).Column
test1.Range(Cells(1,spalte1),Cells(letzteZeile,spalte1)).Copy Destination:=BUKR.Range("B2")
so habe ich das versucht, geht aber leider auch nicht :(
Gruß
Sepp

Anzeige
AW: Range Zuweising bei Variablen Spalten
29.01.2015 11:25:00
Rudi
Hallo,
vor dem : in Range fehlt dir eine Zeilenangabe.
test1.Range(spalte &"1:"& spalte & letzeZeile).Copy Destination:=test2.Range("B2")
Gruß
Rudi

AW: Range Zuweising bei Variablen Spalten
29.01.2015 11:30:30
Sepp
Hallo Rudi,
danke für die Antwort.
Jetzt funktioniert es.
Aber wieso muss da eine 1 rein.
Kann mir das jemand erklären?
Möchte nur meinen Wissensstand erweitern :D
Gruß
Sepp

AW: Range Zuweising bei Variablen Spalten
29.01.2015 11:51:37
Rudi
Hallo,
es muss doch auch z.B. Range("B1:B100") heißen und nicht Range("B:B100").
Gruß
Rudi

AW: Range Zuweising bei Variablen Spalten
29.01.2015 12:24:14
Daniel
Ok dann noch mal für dich:
du hast zwei möglichkeiten:
a) du willst eine ganze Spalte kopieren.
dann gibt man NUR die Spaltenbuchstaben an, und KEINE Zeilennummern
ich wiederhole nochmal:
bei ganzer Spalte NUR die Spaltenbuchstaben und KEINE Zeilennummern
b) du willst nur einen Teilbereich der Spalte kopieren, dh einen Bereich zwischen zwei Zellen
dann musst du in der Range beide Zellen angeben, die obere und die untere Zelle des bereichs und dann brauchst du auch ZWEI Zeilennummern, nämlich die Zeilennummer der oberen Zeile des zu kopierenden Bereichs, und die Zeilennummer der untern Zeile des zu kopierenden Bereichs.
Sobald du also mehrere Zellen kopieren willst, hast du in der Range entweder KEINE Zeilennummer, oder ZWEI Zeilennnummern, aber niemals nur eine.
eine Zeilennummer gibst du nur dann an, wenn die Range genau eine Zelle umfasst.
Gruß Daniel
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige