1.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

Wie kann ich die Spalten numerisch angeben?

Ich möchte einen Block Spalten kopieren, und habe bisher einen festen Spaltenblock benannt:

Columns("B:CA").copy

Nun möchte ich flexibler sein, und ermittle die Anzahl der beschriebenen Spalten mit

iDataColumns = Range("A1").End(xlToRight).Column


Mein Problem: Wie kann ich die Spalten von 2 bis iDataColumns kopieren, sowas in der Art wie Columns("2:iDataColumns") produziert Fehlermeldungen...

vielen Dank im vorraus
Erne

4 Antworten

0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo Erne...
versuch es mal so:
datacolumns = Target.Column ' die Spaltennummer (1- 255)
' ----------- sp solange um eins erhöhen, bis durch abzug 27
' ----------- datcolumns <= 27 ist
sp = 0
Do While datacolumns > 27
sp = sp + 1
datacolumns = datacolumns - 27
Loop
' wenn Spaltennummer >27 dann zwei Buchstaben generieren
If sp > 0 Then
ActiveSheet.Columns("B:" & Chr(64 + sp) & Chr(65 + datacolumns)).Copy
Else ' wenn <27 dann nur ein Buchstabe
ActiveSheet.Columns("B:" & Chr(64 + datacolumns)).Copy
End If


Gruß
Kauz
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Erne,

Spalten mit Zahlen ansprechen
Range(Columns(7), Columns(27)).Hidden=true

Gruß Hajo
0 Punkte
Beantwortet von
Hi,

Das liesse sich lösen wie folgt:

Dim iDataColumns
iDataColumns = Range("A1").End(xlToRight).Column
'iDataColumns = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Columns(2), Columns(iDataColumns)).Copy


btw:
Bei Deiner Art die letzte Datenspalte zu ermitteln, erhälst Du den Wert der Spalte vor der ersten leeren Zelle in Zeile1. Weiter rechts liegende beschriebene Spalten werden nicht berücksichtigt.
Die auskommentierte Zeile ergibt dagegen den Wert der letzten Datenspalte in Zeile1, auch wenn zwischendurch Zellen leer sind.
Da ich Deine Tabelle nicht kenne, wollt ich das erwähnt haben.

bye
malSchauen
0 Punkte
Beantwortet von
Vielen Dank für die Antworten,

mittlerweile bin ich auch auf die Idee gekommen, mit einem Range zu arbeiten, und habe zusätzlich zu den Anzahl der Spalten die Anzahl der Zeilen auf die gleiche Weise ermittelt und dann mit Cells den Bereich festgelegt.

Range(Cells(obenlinks),Cells(untenrechts))...

Mein Fazit:
Es ist also nicht möglich mit "Columns" mehrere Spalten zu benennen, es sei denn man macht es über die Bezeichnung der Spalten mit ihren Buchstaben, wie in meinem ersten Versuch. (Man kann doch in den Optionen von Excel auch einstellen, ob die Spalten durchbuchstabiert oder durchnummeriert werden? Wie funktioniert das denn dann bei Zahlen als Spaltenname?)
Da mir der Weg von Kauz viel zu kompliziert erscheint, und ich auch nicht sehe, welchen Nachteil es haben sollte, einen Range statt Columns zu benutzen, werden ich den Range mit Columns verwenden.

@malSchauen: danke für den Extra Tipp, wäre in meinem Fall aber nicht nötig gewesen. Ist aber sehr interessant, wenn man die letzte Zeile von einem Datensatz mit irgendwelchen Headern sucht.

Gruß
Erne
...