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

Forumthread: Spaltenname per VBA vergeben

Spaltenname per VBA vergeben
08.04.2015 11:39:47
BenneW
Hallo,
ich habe vor ein paar Tagen angefangen, mich in VBA einzulesen und habe deshalb nur Grundkenntnisse. Generelle Programmierkenntnisse in C habe ich aber...
Mein Problem:
Ich habe ein Tabellenblatt, dessen Namen ich kenne.
In diesem Tabellenblatt befinden sich Datensätze. Die einzelnen Attribute sind spaltenweise sortiert. Sprich in Spalte A steht bei allen zB die Nummer und in Spalte B bei allen der Name.
Bei dem Importieren dieser Daten in das Tabellenblatt weiß ich zwar, welche Spalten es alles gibt, ich weiß aber nicht, in welcher Spalte sich welches Attribut befindet. Es kann also sein, dass der Name einmal in Spalte B steht und das nächste Mal in Spalte F.
Deshalb durchsuche ich die erste Zeile nach dem gesuchten Attribut (Hier jetzt "Customer Ref ID"). Habe ich es gefunden, möchte ich die gesamte Spalte den Namen geben "Customer Ref ID", so dass ich diese später direkt mit dem Namen ansprechen kann.
Leider funktioniert das bei mir nicht so, wie es soll...
Könnt ihr mir helfen?
Mein Tabellenblatt heißt immer "Export"
Hier mein Code:
Public Sub Import()
Dim sr As Double 'Laufvariable zum Durchlaufen der Spalten
For sr = 1 To 30 'Abgleich der ersten 30 Spalten um Customer Ref ID zu finden
If (Worksheets("Export").Cells(1, sr).Value) = "Customer Ref ID" Then
Worksheets("Export").Columns(sr).Name = "Customer Ref ID"
Exit For
End If
Next sr
Wenn ich nun den benannten Bereich ansprechen und (testweise) die gesamte Spalte einfärben möchte, geht das leider nicht:
Worksheets("Export").Range("Customer Ref ID").Interior.ColorIndex = 6
Um Rat wäre ich sehr dankbar!
Viele Grüße
Benne

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spaltenname per VBA vergeben
08.04.2015 11:49:42
BenneW
Hallo,
hat sich erledigt...
Habe den Fehler gefunden: Der Name für den Bereich darf keine Leerzeichen enthalten.
Die Fehlermeldung erschien nur nie, wenn ich das per VBA gemacht habe... :-(
Viele Grüße
Benne

AW: Spaltenname per VBA vergeben
08.04.2015 13:43:09
fcs
Hallo Benne,
ich hatte mich deinem Problem jetzt auch ein wenig beschäftigt.
Du solltest dein Makro etwa wie folgt aufbauen zur Festlegung der Namen und zum Bearbeiten/Formatieren der Spalten mit Namen.
Gruß
Franz
Public Sub Import()
Dim sr As Long 'Laufvariable zum Durchlaufen der Spalten
Dim wkbExport As Workbook, wksExport As Worksheet
Dim strName As String, objName As Name
Set wkbExport = ActiveWorkbook
Set wksExport = wkbExport.Worksheets("Export")
'Den Spalten Namen zuweisen
With wksExport
For sr = 1 To 30 'Abgleich der ersten 30 Spalten um Customer Ref ID zu finden
strName = ""
Select Case .Cells(1, sr).Value
Case "Customer Ref ID"
strName = "Customer_Ref_ID"
Case "Customer Name"
strName = "Customer_Name"
Case "xyz"
strName = "XYZ"
End Select
If strName  "" Then
.Columns(sr).Name = strName
End If
Next sr
End With
'Spalten mit bestimmten Namen formatieren
For Each objName In wkbExport.Names
Select Case objName.Name
Case "Customer_Ref_ID", "Custommer_Name"
With objName.RefersToRange
.Interior.ColorIndex = 6
End With
Case "AAAA"
With objName.RefersToRange
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
End With
Case Else
'do nothing
End Select
Next objName
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spaltennamen mit VBA in Excel festlegen


Schritt-für-Schritt-Anleitung

Um Spaltennamen in Excel per VBA festzulegen, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deinDateiname)" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Public Sub Import()
        Dim sr As Long 'Laufvariable zum Durchlaufen der Spalten
        Dim wkbExport As Workbook, wksExport As Worksheet
        Dim strName As String, objName As Name
        Set wkbExport = ActiveWorkbook
        Set wksExport = wkbExport.Worksheets("Export")
    
        'Den Spalten Namen zuweisen
        With wksExport
            For sr = 1 To 30 'Abgleich der ersten 30 Spalten um Customer Ref ID zu finden
                strName = ""
                Select Case .Cells(1, sr).Value
                    Case "Customer Ref ID"
                        strName = "Customer_Ref_ID"
                    Case "Customer Name"
                        strName = "Customer_Name"
                End Select
                If strName <> "" Then
                    .Columns(sr).Name = strName
                End If
            Next sr
        End With
    
        'Spalten mit bestimmten Namen formatieren
        For Each objName In wkbExport.Names
            Select Case objName.Name
                Case "Customer_Ref_ID", "Customer_Name"
                    With objName.RefersToRange
                        .Interior.ColorIndex = 6
                    End With
            End Select
        Next objName
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, um die Spaltennamen festzulegen.


Häufige Fehler und Lösungen

Ein häufiges Problem ist, dass der Name für den benannten Bereich keine Leerzeichen enthalten darf. Achte darauf, dass du im Code die Namen korrekt vergibst. Wenn du die Fehlermeldung erhältst, dass der benannte Bereich nicht gefunden wurde, überprüfe die Schreibweise des Spaltennamens.

Ein weiterer Fehler kann sein, dass der VBA-Code nicht auf das richtige Tabellenblatt zugreift. Stelle sicher, dass das Tabellenblatt den Namen "Export" trägt.


Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du auch manuell die Spaltenüberschriften in Excel festlegen:

  1. Klicke in die erste Zeile der gewünschten Spalte.
  2. Gib den gewünschten Spaltennamen ein.
  3. Verwende die Funktion "Bedingte Formatierung", um die Spalte hervorzuheben.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Spalte "Customer Ref ID" per VBA ansprechen und formatieren kannst:

Worksheets("Export").Range("Customer_Ref_ID").Interior.ColorIndex = 6

Dieser Code färbt die gesamte Spalte, die den Namen "Customer Ref ID" trägt, gelb. Achte darauf, dass du den Namen im Code mit dem Namen im Tabellenblatt übereinstimmend schreibst.


Tipps für Profis

  • Nutze das Debug.Print-Kommando, um Fehler in deinem Code zu identifizieren.
  • Halte deine VBA-Projekte organisiert, indem du sinnvolle Modulnamen verwendest.
  • Experimentiere mit der Select Case-Anweisung, um mehrere Spaltennamen effizient zu bearbeiten.

FAQ: Häufige Fragen

1. Kann ich auch mehrere Spaltennamen gleichzeitig festlegen?
Ja, du kannst mehrere Case-Anweisungen innerhalb der Select Case-Struktur hinzufügen, um verschiedene Spaltennamen in einem Durchlauf zu vergeben.

2. Wie kann ich sicherstellen, dass meine Spaltennamen eindeutig sind?
Vermeide Leerzeichen und spezielle Zeichen in deinen Spaltennamen. Verwende stattdessen Unterstriche oder CamelCase, um die Lesbarkeit zu erhöhen.

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