Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Saltenköpfe statt Spaltennummern in VBA?

Saltenköpfe statt Spaltennummern in VBA?
Olaf
Hallo
Ich nutze VBA, um Inhalte aus bestimmten Zellen meiner Excel-Tabelle in txt-Dateien zu schreiben.
Wenn ich z.B. den Inhalt aus der aktuellen Zelle in Spalte C in meine txt-Datei schreiben will, benutze ich:
Print #iFile, Cells(iRow, 3)
Wenn ich nun aber in meiner Excel-Tabelle eine zusätzliche Spalte vor Spalte B einfüge, verschiebt sich ja der Inhalt der Spalte C. Und der Code in meinem VBA-Makro schreibt nun falsche Inhalte in die txt-Datei.
Daher meine Frage:
Ist es möglich, in den genannten VBA-Code statt der Spaltennummer die Spaltenüberschrift einzusetzen?
So, dass das Makro sich den Inhalt quasi aus der Spalte holt, die die entsprechende Spaltenüberschrift hat.
Beispiel:
Bisherige Code: Print #iFile, Cells(iRow, 3)
Neuer Code: Print #iFile, Cells(iRow, [Umsatz 2010])
(wobei "Umsatz 2010" die entsprechende Spaltenüberschrift wäre)
Ich hoffe, man kann mein Anliegen nachvollziehen.
Ist etwas schwierig zu erklären :-)
Ich möchte halt gerne vermeiden, dass ich meinen ganzen Makro-Code anpassen muss, wenn sich aufgrund zusätzlich eingefügter Spalten nachfolgende Spalten verschieben.
Über Hilfe bzw. ratschläge von Euch würde ich mich sehr freuen.
Gruß
Olaf

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
benutze doch einen definierten Namen ...
17.05.2011 21:44:46
Matthias
Hallo
Markiere mal die Spalte(C) und gib ihr den Namen: meinespalte
Jetzt kannst Du mit Cells(iRow, [meinespalte].column) auf diese zugreifen.
Durch Hinzufügen oder Entfernen von Spalten passt sich der Bezug dann automatisch an.
Userbild
AW: Saltenköpfe statt Spaltennummern in VBA?
17.05.2011 21:45:38
Peter
Hallo Olaf,
so geht es nicht, Du kannst aber die gesamte Spalte wie Deine Überschrift benennen (ganz links im Namensfeld) musst aber darauf achten, dass keine Leerzeichen enthalten sind und die ggf. in Unterstriche ändern.
Z. B. so:
Public Sub Test()
Dim lZeile  As Long
For lZeile = 2 To Cells(Rows.Count, 3).End(xlUp).Row
MsgBox Cells(lZeile, Range("Umsatz_2010").Column).Value
Next lZeile
End Sub
Gruß Peter
Anzeige
AW: Saltenköpfe statt Spaltennummern in VBA?
17.05.2011 21:53:12
Daniel
Hi
du kannst die Spaltennummer aus der Überschrift (erste Zeile) auf verschiedene Arten ermitteln:
- Rows(1).Find(what:="DeineÜberschrift", Lookat:=xlwhole).Column
- WorksheetFunction.Match("DeineÜberschrift"), Rows(1), 0)
das kannst du entweder direkt anstelle der fixen Spaltennummer in den Code einfügen oder erstmal an eine Variable übergeben und dann diese verwenden.
Die 2. Variange verwendet mann, wenn man die gleiche Spaltennummer öfters braucht, bzw um den Code übersichtlicher und schneller zu machen:
Variante 1
Print #iFile, Cells(iRow, Rows(1).Find(what:="Umsatz 2010", lookat:=xlwhole).Column)

Variante 2
dim spUms2010 as long
spUms2010 = Rows(1).Find(what:="Umsatz 2010", lookat:=xlwhole).Column
Print #iFile, Cells(iRow, spUms2010)

Anzeige
AW: Saltenköpfe statt Spaltennummern in VBA?
18.05.2011 23:17:31
Olaf
Hallo Matthias, Peter und Daniel
Vielen Dank für Eure schnelle und nette Hilfe.
Mit Eurer Anleitung habe ich es nun wie gewünscht hinbekommen.
Gruß
Olaf

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige