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

Spalten-Namen statt Spalten-Nummern in einem Makro

Forumthread: Spalten-Namen statt Spalten-Nummern in einem Makro

Spalten-Namen statt Spalten-Nummern in einem Makro
29.09.2015 08:07:45
Ingo
Hallo
Ich habe hier eine Makro, was mir eine Text-Datei aus den Daten einer Excel-Tabelle erstellt:
Sub Reset()
' Produktdatei erstellen
Dim varSpalten
Dim intSpalte As Integer, lngZeile As Long
Dim objQuellblatt As Worksheet
Dim objZielblatt As Worksheet
Dim strPfad As String
Dim varTmp, strOut As String
Open "C:\[...]\datei.csv" For Output As #1
'Datenquelle für Produktdatei festlegen
Set objQuellblatt = ThisWorkbook.Sheets("Angebot")
varSpalten = Array(2, 3, 4, 5, 6, 9, 15, 24, 25, 26, 27, 28)
varTmp = objQuellblatt.UsedRange
For lngZeile = 1 To UBound(varTmp)
strOut = ""
If Len(varTmp(lngZeile, varSpalten(0))) > 0 Then
For intSpalte = 0 To UBound(varSpalten)
strOut = strOut & ";" & varTmp(lngZeile, varSpalten(intSpalte))
Next intSpalte
strOut = Mid(strOut, 2)
Print #1, strOut
End If
Next lngZeile
Close #1
End Sub

In der Zeile
varSpalten = Array(2, 3, 4, 5, 6, 9, 15, 24, 25, 26, 27, 28)

sind ja die Spalten-Nummern aufgeführt, dessen Inhalte verwendet werden sollen.
Ich würde nun gerne wissen, ob man diese Zeile auch umschreiben kann.
Und zwar so, dass ich dort nicht die Spalten-Nummern sondern die Spalten-Namen angebe.
Der Grund, warum ich das gerne möchte, ist folgender:
Wenn ich jetzt in meiner Tabelle irgendwelche Spalten hinzufüge, verschieben sich ja unter Umständen auch die Spalten und dessen Spalten-Nummern, die von dem Makro verwendet werden sollen. Und ich muss dass Makro jedes Mal anpassen.
Das würde ich mir gerne ersparen und darum im Makro gerne statt der Spalten-Nummern lieber die Spalten-Namen verwenden.
Da ich ja leider von VBA nicht so sehr viel verstehe, wollte ich Euch gerne um Hilfe bitten.
Gruß
Ingo

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Spalten-Namen statt Spalten-Nummern in einem Makro
29.09.2015 08:59:18
Beverly
Hi Ingo,
du könntest die Spalten-Nummern abfragen nach diesem Prinzip: Range("Spalte_A").Column, wobei "Spalte_A" z.B. der definierte Name für Spalte A ist.


AW: Spalten-Namen statt Spalten-Nummern in einem Makro
29.09.2015 09:06:28
Ingo
Hallo Karin
Danke für Deine Hilfe.
Ich bin nicht ganz sicher, ob ich das wirklich verstehe.
Ich bin ja leider nur Anfänger in VBA (wenn man das überhaupt so nennen kann).
Wäre das so korrekt?
varSpalten = Array(Range("Spalte_B").Column, Range("Spalte_C").Column, Range("Spalte_D").Column, 5,  [usw.])

Anzeige
AW: Spalten-Namen statt Spalten-Nummern in einem Makro
29.09.2015 09:19:36
Beverly
Hi Ingo,
ja, so solltes du das Array belegen können.


AW: Spalten-Namen statt Spalten-Nummern in einem Makro
29.09.2015 09:57:39
Ingo
Hallo Karin
OK prima. ich habe das nun bei mir im Code entsprechend angepasst.
Und es funktioniert super.
Danke nochmal sehr!
Gruß
Ingo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Spalten-Namen statt Spalten-Nummern in einem Makro verwenden


Schritt-für-Schritt-Anleitung

Um in einem Excel-Makro Spalten-Namen anstelle von Spalten-Nummern zu verwenden, kannst du den folgenden Schritten folgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Finde dein Makro: Suche das Makro, in dem du die Spalten-Nummern ändern möchtest.

  3. Ändere die Deklaration für varSpalten: Anstelle von Spalten-Nummern verwende die Range("Spalten_Name").Column Methode. Dein Code könnte dann so aussehen:

    varSpalten = Array(Range("Spalte_B").Column, Range("Spalte_C").Column, Range("Spalte_D").Column, 5, ...)
  4. Testen: Führe das Makro aus, um sicherzustellen, dass es wie gewünscht funktioniert.


Häufige Fehler und Lösungen

  • Fehler: Objekt nicht gefunden

    • Lösung: Stelle sicher, dass der Name der Spalte korrekt geschrieben ist und dass die Spalte tatsächlich in deinem Arbeitsblatt existiert.
  • Fehler: Typenkonflikt

    • Lösung: Überprüfe, ob varSpalten korrekt als Array deklariert ist und dass alle Werte gültige Spalten-Namen verwenden.

Alternative Methoden

Eine alternative Methode, um Spalten-Namen zu verwenden, wäre die Verwendung von benannten Bereichen:

  1. Benannte Bereiche erstellen: Markiere die Spalte, gehe zu Formeln > Namensmanager, und erstelle einen neuen Namen für die Spalte.
  2. Im Makro verwenden: Anstelle von Range("Spalte_B") kannst du den Namen verwenden, den du definiert hast.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du Spalten-Namen in deinem Makro verwenden kannst:

Sub Beispiel()
    Dim varSpalten
    varSpalten = Array(Range("Produktname").Column, Range("Preis").Column, Range("Menge").Column)

    ' Weitere Makro-Logik hier...
End Sub

In diesem Beispiel werden die Spalten für "Produktname", "Preis" und "Menge" verwendet, ohne dass du die Spalten-Nummern anpassen musst, wenn du neue Spalten hinzufügst.


Tipps für Profis

  • Nutze benannte Bereiche für mehr Übersichtlichkeit in deinem Code.
  • Halte deine Spalten-Namen konsistent, um Verwirrung zu vermeiden.
  • Verwende Fehlerbehandlung in deinem Makro, um unerwartete Probleme zu vermeiden, z.B.:
On Error Resume Next

FAQ: Häufige Fragen

1. Kann ich auch mehrere Spalten gleichzeitig ansprechen?
Ja, du kannst mehrere Spalten-Namen in deinem Array angeben, wie im obigen Beispiel gezeigt.

2. Was, wenn eine Spalte nicht existiert?
In diesem Fall gibt es einen Laufzeitfehler. Du kannst dies mit Fehlerbehandlung abfangen, z.B. mit On Error Resume Next.

3. Funktioniert das in allen Excel-Versionen?
Ja, die Verwendung von Spalten-Namen in VBA funktioniert in den meisten aktuellen Excel-Versionen. Achte jedoch darauf, dass du in einer Version arbeitest, die VBA unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige