Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1356to1360
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

Zelle nach Spaltenüberschrift ansprechen

Zelle nach Spaltenüberschrift ansprechen
04.05.2014 13:38:40
Ingo
Hallo
Ich schberieb mittels VBA Werte aus einer Excel-Tabelle in eine Text-Datei.
Das mache ich bisher immer so:
Print #iFile, Cells(iRow, 8)
Dabei wird ja der Inhalt der Zelle in Spalte 8 in die Text-Datei geschrieben.
Nun kommt es aber vor, dass ich meine Excel-Tabelle mal umbaue (Spalten löschen und neue einfügen).
Und dabei kann es ja auch vorkommen, dass die Spalte 8 Ihren Platz verändert und z.B. dann Na dem Plat der Spalte 5 sitzt.
Nun schreibt mir das VBA-Script aber nicht mehr den gewünchten Wert der ehemaligen Spalte 8 in die Text-Datei.
Gibt es dafür eine sinnvoller Lösung als die von mir bisher angewendete?
Gruß
Ingo

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 13:42:53
Hajo_Zi
Hallo Ingo,
ich habe der Spalte einen Namen gegeben.
MsgBox Range("SpalteD").Cells(5)

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 13:51:27
Ingo
Ah OK, ich verstehe.
Kann man so einen Spalten-Namen auch wieder löschen bzw. wieder auf den Standard zurücksetzen?

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 13:52:29
Hajo_Zi
ja einfach den Namen löschen.
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 13:55:54
Ingo
Das funktioniert bei mir nicht.
Ich markiere den Spalten-Namen, drücke "Entf" und dann "Enter".
Wenn ich zur Kontrolle die Spalte dann wieder komplett markiere, steht da wieder der alte Spaltenname.

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 13:59:25
Hajo_Zi
bei mir nicht, ich gehe auf Einfügen, Namen, Definieren, wähle den Namen und Drücke Löschen und er ist fort.
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:02:44
Ingo
Ah alles klar, so klappt es auch bei mir.

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:11:18
Ingo
OK das klappt auch bei mir.
Aber irgendwie brech ich mir hier noch einen ab.
Bitte entschuldige, wenn ich mich da blöd anstelle.
Wie ist denn der beste Weg, einer SPalte einen Namen zu geben, den es noch nicht gibt?
Und dann man auch mehreren Spalten den gleichen Namen geben?

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:13:35
Hajo_Zi
ich markiere die Spalte und in der Bearbeitsleiste ganz Links steht D1, das markiere ich und schreibe meinen Namen hin, oder Einfügen, Namen, Definieren und dort den Namen eintragen.
Gruß Hajo

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:21:18
Ingo
Ich habe hier im Forum gerade noch diese Möglichkeit für mein ursprüngliches Anliegen gefunden:
Print #iFile, Cells(iRow, Rows(1).Find(what:="Umsatz 2010", lookat:=xlwhole).Column)
Da wir die Spaltennummer quasi automatisch aus der Spaltenüberschrift ermittelt und verwendet.
Da würde ich dann sogar ohne Spaltennamne auskommen.
Spricht da etwas dagegen, es so zu machen?

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:26:03
Hajo_Zi
Nein, falls die Spalten Überschrift nicht geändert wird.
Bei Namen hast Du den Vorteil. Im nächsten Jahr löscht Du den Namen und gibst dem aktuelle Jahr den Namen, da braucht nichts am Code geändert werden.
Gruß Hajo

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:28:18
Ingo
Ah OK alles klar.
Dann werde ich es mit den Spaltennamen verwenden.
Mein bisheriger Code:
Print #iFile, Cells(iRow, 8)
Mein neuer Code:
Print #iFile, Cells(iRow, [SpaltenName].Column)
Ricgtig?

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:32:58
Hajo_Zi
meine kurze Schreibweise gefiel Dir also nicht.
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:39:10
Ingo
Meinst Du so?
Print #iFile, Range("SpaltenName").Cells(5)
Wenn ja, was hat denn die 5 zu bedeuten?

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:40:56
Hajo_Zi
Zeile 5
Gruß Hajo

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:49:33
Ingo
Da habe ich mich evtl. falsch ausgedrückt in meinen ursprünglichen Posting.
Ich möchte ja, den Spaltenwert aud der akuell aktiven Zeile in die Text-Datei schreiben.
Also ich meine, den Wert aud der Zeile, in der sich gerade der Cursor befindet.
Wäre es dann so korrekt in der kurzen Schreibweise?
Print #iFile, Range("SpaltenName").Cells(iRow)

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 14:58:11
Ingo
Ah ja stimmt, hatte ich nicht geschrieben.
Bei mir ist iRow = ActiveCell.Row.
Ich meinte auch nicht die Cursor-Zeile, sondern die aktive Zeile.
Mir ist nur die richtige Bezeichnung nicht eingefallen.

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 18:17:13
Ingo
Nun habe ich noch eine Stelle im VBA-Code, wo ich nicht sicher weis, wie ich das Lösen kann:
For Each zeile In AWS.Range("BY1:BY" & CStr(Rx))
Dort wird ja eine Schleife bekonnen die in Spalte By etwas "macht".
Wie kann ich denn hier statt dem "BY" den Spalten-Namen einbauen?
Damit eben auch hier immer die gewünschte Spalte Verwendung findet, falls ich die Spalte mal verschiebe.

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 18:19:48
Hajo_Zi
schreibe einfach Range("SpalteD")
und mache in der Schleife eine Prüfung ob Zelle "" ansonsten Exit For.
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 18:32:22
Ingo
Wenn ich meinen Code richtig verstehe, ist die Prüfung ob Zelle "" schon drin.
Ich probiere hier schon eine Weiler herum, bekomme es aber nicht hin.
We ichh Dich jetzt richtig verstehe, soll eich aua
For Each zeile In AWS.Range("BY1:BY" & CStr(Rx))
das hier machen
For Each zeile In AWS.Range("Google_ID" & CStr(Rx))
wober Google_ID der Spalten-Name ist.
Aber da bekomme ich beim Ausführen dann eine Fehlermeldung.

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 18:34:27
Hajo_Zi
wenn Deine Spalte den Namen "Google_ID" & CStr(Rx) hat ja.
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 18:36:37
Ingo
Ah hehe, jetzt ist bei mir der Groschen gefallen.
Danke!

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 18:48:00
Ingo
Ich glaube jetzt habe ich meinen ganzen Code fast komplett so umgestellt, dass alle Spalten nur noch anhand ihres Spaleten-Namens angesprochen werden.
Ein (hoffentlich letztes) Stück ist das hier noch:
Range("A1:CO1492").Sort
Range("A1:CO1500").Sort
Damit wird meine ganze Tabelle (der Teil von A1 - CO1500) sortiert (mit noch anhängenden Parametern).
Und auch hier rätzel ich nun wieder, wie ich das mit Spalten-Namen machen muss.
Wäre das so richtig? (Spaltenname von CO ist "Letzte_Spalte")
Range("A1:Letzte_Spalte").Sort

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 19:12:56
Hajo_Zi
falls es keine Leerzeilen oder Leerspalten gibt reicht Range("A1")
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
04.05.2014 19:41:04
Ingo
Oh :-)
Alles klar.
Danke Dir sehr für Deine nette Hilfe heute.

AW: Zelle nach Spaltenüberschrift ansprechen
05.05.2014 07:53:47
Ingo
Um per VBA Makro zu einer bestimmten Spalte in der aktiven Zelle zu springen:
Cells(ActiveCell.Row, 24).Select
Nun möchte ich aber auch hier statt der Spaltennummer den Spaltennamen verwenden.
Und leider wollen meine Versuche nicht klappen:
Cells(ActiveCell.Row, "Lager").Select
Cells(ActiveCell.Row, Range("Lager")).Select
Warum denn nur?
Ich verstehe es nicht.

Anzeige
AW: Zelle nach Spaltenüberschrift ansprechen
05.05.2014 11:09:01
Ingo
Ich kapiere es leider immer noch nicht.
Demnach müsste es doch so richtig sein:
Range("Lager").Cells(ActiveCell.Row)
Geht aber nicht leider.

AW: Zelle nach Spaltenüberschrift ansprechen
05.05.2014 12:05:46
Hajo_Zi
dazu kann ich nichts schreiben, was wohl daran liegt das ich nicht gesehen habe was Du machst und ich die Datei nicht sehe.
Gruß Hajo

AW: Zelle nach Spaltenüberschrift ansprechen
05.05.2014 14:12:04
Ingo
Ah OK, bitte entschuldige.
Ich habe für meine Excel Tabelle ein Makro, damit ich per Strg+i direkt zu einer bestimmten Spalte springen kann. Das habe ich bisher so gemacht:
Cells(ActiveCell.Row, 21).Select
Nun würde ich es gerne so machen, dass nicht die Spalten-Nummer (hier Spalte 21) als Sprung-Ziel verwendet wird, sondern der Spaltenname ("Lager").
Ich habe mir Deine Hinweise und Beispiel-Dateien genau angeschaut, wo Du schreibst dass select und activate usw. meist überflüssig sind. Aber leider bin ich nicht sehr gut in VBA und versuche es mir mit dem "normalen" Menschenverstand zu erklären bzw. das zu verstehen.
Und das obige Problem bekomme ich nicht hin.
Im Grunde habe ich mehere Dinge probiert, muss aber natürlich gestehen, dass es eher ein wildes herumprobieren war/ist. Ich würde das natürlich viel lieber genau verstehen, aber irgendwie überfordert mich das noch.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige