Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Variable = Spalte und wir wollen hochzählen

Forumthread: VBA - Variable = Spalte und wir wollen hochzählen

VBA - Variable = Spalte und wir wollen hochzählen
19.07.2018 13:20:06
Sebastian
Hallo VBA-Gemeinde,
ich stecke noch in den Kinderschuhen der Excel VBA Welt und habe ein kleineres Problem.
Ich will, dass der User nach Buttonklick eine Spalte eingibt, welche im Nachgang bearbeitet wird.
Gibt der User beispielsweise "a" ein, so soll eine weitere Spalte nach "a" angelegt werden (also bei b), diese Spalte ist zunächst leer.
Im weiteren Verlauf soll jede Zelle aus a nach bestimmten Kriterien überprüft werden und findet man ein Fehler, so soll dieser in der neuerstellten Spalte bereinigt dargestellt werden.
Mein Problem ist aktuell, dass ich es nicht schaffe, dass VBA mir eine Spalte in a+1 anlegt, da dies ja Buchstaben sind und ich nicht hochzählen kann.
Auch mit Schleifen bin ich nicht zum Ziel gekommen.
Es sieht wie folgt aus:
Sub Bereinigen()
Dim x As Integer
Dim y As Variant
Dim i As Integer
Dim lastrow As Integer
y = InputBox("Welche Spalte soll bereinigt werden?")
If y = "" Then
MsgBox "Bitte geben Sie eine Spalte an!", vbInformation
ElseIf IsNumeric(y) = True Then
MsgBox "Bitte gebe ein richtiges Spaltenformat an!", vbInformation
End If
lastrow = ThisWorkbook.Sheets("kopie").Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To lastrow
Range(y & x) = Application.Substitute(Range(y & x), Chr(10), "")
Range(y & x) = Trim(Range(y & x))
Range(y & x) = Application.Substitute(Range(y & x), "gmbh", "GmbH")
Range(y & x) = Application.Substitute(Range(y & x), "ohg", "OHG")
Range(y & x) = Application.Substitute(Range(y & x), "eg", "eG")
Range(y & x) = Application.Substitute(Range(y & x), "kg", "KG")
Next
End Sub

Im folgenden Beispiel würde er nur die ausgewählte Spalte direkt bereinigen nach den Kriterien.
Wir wollen aber in Spalte+1 eine neue Spalte angelegt bekommen udn die Änderungen soll er dort ablegen.
Sprich wir werden sagen, suche in Spalte"Eingabe" nach Fehlern, wenn Fehler vorliegt, dann kopiere in neue Spalte und bereinige.
Weiß jemand wie ich es erstmal hinbekomme, dass die zusätzliche Hilfsspalte angelegt wird?
Also gibt der User "b" ein, dann soll in C angelegt werden, gibt er C ein, dann in D, usw.
Ich hoffe, dass ich mich verständlich ausgedrückt habe und das mein Ansatz erstmal genügt.
Ich bin für jeden Ratschlag/Tipp dankbar,
Sebastian
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Variable = Spalte und wir wollen hochzählen
19.07.2018 13:26:37
Sebastian
Gerade mit einer IF-Verschachtelung herumgespielt und so geht es eigentlich, aber siehst sehr unorthodox und nicht elegant aus.
Geht das vielleicht viel leichter und eleganter durch eine Schleife etc?
Hier der Ansatz was passieren soll:
If y = "a" Then
Range("b1").EntireColumn.Insert
ElseIf y = "b" Then
Range("c1").EntireColumn.Insert
ElseIf y = "c" Then
Range("d1").EntireColumn.Insert
ElseIf y = "d" Then
Range("e1").EntireColumn.Insert
ElseIf y = "e" Then
Range("f1").EntireColumn.Insert
ElseIf y = "f" Then
Range("g1").EntireColumn.Insert
ElseIf y = "g" Then
Range("h1").EntireColumn.Insert
ElseIf y = "h" Then
Range("i1").EntireColumn.Insert
ElseIf y = "i" Then
Range("j1").EntireColumn.Insert
ElseIf y = "j" Then
Range("k1").EntireColumn.Insert
ElseIf y = "k" Then
Range("l1").EntireColumn.Insert
ElseIf y = "l" Then
Range("m1").EntireColumn.Insert
ElseIf y = "m" Then
Range("n1").EntireColumn.Insert
ElseIf y = "n" Then
Range("o1").EntireColumn.Insert
'End If
Anzeige
AW: VBA - Variable = Spalte und wir wollen hochzählen
19.07.2018 13:30:50
Hajo_Zi
Hallo Sebastian,
Range(y &"1").Offset(0,1).EntireColumn.Insert

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: VBA - Variable = Spalte und wir wollen hochzählen
19.07.2018 13:32:33
ChrisL
Hi
Zwei Beispiele
Sub t()
Dim y As String
y = "A"
MsgBox Cells(1, y).Address
MsgBox Cells(1, y).Offset(0, 1).Address
End Sub

Sub tt()
Dim y As Range
Set y = Application.InputBox("Bereich direkt auswählen", "Auswahl per Mausklick", , , , , , 8)
MsgBox y.Address
End Sub
cu
Chris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Automatisches Einfügen einer Spalte mit Benutzerinput


Schritt-für-Schritt-Anleitung

  1. Benutzerinput abfragen: Verwende InputBox, um den Benutzer nach der gewünschten Spalte zu fragen. Stelle sicher, dass der Input in einem gültigen Format erfolgt.

    y = InputBox("Welche Spalte soll bereinigt werden?")
  2. Validierung des Inputs: Überprüfe, ob der Benutzer einen gültigen Buchstaben eingegeben hat. Falls nicht, zeige eine entsprechende Meldung an.

    If y = "" Then
       MsgBox "Bitte geben Sie eine Spalte an!", vbInformation
    ElseIf Not IsNumeric(y) Then
       ' Hier kannst du den Code hinzufügen, um die Spalte zu bearbeiten
    End If
  3. Neue Spalte einfügen: Nutze die Offset-Methode, um eine neue Spalte rechts von der eingegebenen Spalte zu erstellen.

    Range(y & "1").Offset(0, 1).EntireColumn.Insert
  4. Zellen bearbeiten: Iteriere durch die Zellen in der angegebenen Spalte und führe die gewünschten Änderungen durch, wobei du die Ergebnisse in die neue Spalte schreibst.

    lastrow = ThisWorkbook.Sheets("kopie").Cells(Rows.Count, 1).End(xlUp).Row
    For x = 2 To lastrow
       ' Hier kannst du deine Logik zur Fehlerbehebung hinzufügen
    Next

Häufige Fehler und Lösungen

  • Fehler: "Bitte gebe ein richtiges Spaltenformat an!"

    • Lösung: Stelle sicher, dass der Benutzer nur Buchstaben und keine Zahlen eingibt. Du kannst eine Regex-Überprüfung verwenden, um dies zu validieren.
  • Fehler: Spalte wird nicht erstellt

    • Lösung: Überprüfe, ob der Buchstabe im richtigen Format angegeben ist. Stelle sicher, dass du Offset korrekt verwendest.

Alternative Methoden

Eine weitere Möglichkeit, eine neue Spalte einzufügen, besteht darin, VBA-Tabellen zu verwenden. Du kannst die Tabelle dynamisch erweitern und neue Spalten einfach hinzufügen, indem du die ListObjects-Methode verwendest.

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("kopie")
Dim tbl As ListObject

Set tbl = ws.ListObjects("DeineTabelle")
tbl.ListColumns.Add

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du die Methode in einem Makro verwenden kannst:

Sub NeueSpalteEinfügen()
    Dim y As String
    Dim lastrow As Integer

    y = InputBox("Gib den Buchstaben der Spalte ein:")
    If y = "" Then Exit Sub

    Range(y & "1").Offset(0, 1).EntireColumn.Insert
    lastrow = ThisWorkbook.Sheets("kopie").Cells(Rows.Count, 1).End(xlUp).Row
    For x = 2 To lastrow
        Cells(x, y).Value = Cells(x, y).Value & " (bearbeitet)"
    Next x
End Sub

Tipps für Profis

  • Verwende Schleifen: Anstelle von If-Bedingungen für jede Spalte, nutze Schleifen, um den Code zu vereinfachen und flexibler zu gestalten.
  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um unerwartete Fehler zu vermeiden und den Code robuster zu gestalten.
  • Dynamische Variablen: Arbeite mit Variant statt String, um flexibler bei der Verarbeitung von unterschiedlichen Datentypen zu sein.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die neue Spalte immer rechts von der eingegebenen Spalte eingefügt wird? Indem du die Offset-Methode verwendest, wird die neue Spalte immer rechts von der angegebenen Spalte eingefügt.

2. Was passiert, wenn der Benutzer eine ungültige Eingabe macht? Du solltest sicherstellen, dass dein Code Eingaben validiert und den Benutzer informiert, falls die Eingabe ungültig ist.

3. Kann ich diese Methode für mehrere Spalten gleichzeitig verwenden? Ja, du kannst eine Schleife implementieren, die mehrere Spalten abfragt und für jede Spalte die entsprechende neue Spalte einfügt.

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