Live-Forum - Die aktuellen Beiträge
Datum
Titel
01.11.2025 21:11:38
01.11.2025 14:22:20
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wert von String Variable in Zelle schreiben in einer Schleife

Wert von String Variable in Zelle schreiben in einer Schleife
23.12.2019 17:02:54
String
Hallo zusammen, ich habe mir über eine for-Schleife die unique-Werte der Spalte "Kategorie" in Abhängigkeit zur Spalte "Monat, Jahr" ausgeben lassen mit dem AdvancedFilter und der Copy-Aktion. Was hierbei etwas stört ist, dass die Überschriften der Spalte Kategorie mitgefiltert wurden. Klar das kann ich einfach löschen in einer Schleife, aber vielleicht gibt es bei dem Advanced-Filter beim FilterCopy eine Eigenschaft, mit der ich das festlegen kann? Meine Tabelle sieht, wie folgt aus:
Spalte A Spalte B
Month & Year Category
1, 2019 Category
A
B
C
2, 2019 Category
A
B
C
D
etc. für die weiteren Monate
In einer weiteren Schleife will ich nun für alle leeren Zellen in Spalte A den jeweiligen Wert von Month & Year hineinschreiben. Ich zeige hierzu am besten meinen bisherigen Code. Das Übertragen klappt soweit auch, nur dass das Komma verschwindet. Das heißt statt 1, 2019 steht: 12019
Der Code:
Dim moYe As String
lastrowOutput = ThisWorkbook.Worksheets("Output1").Cells(Rows.Count, 2).End(xlUp).row
'ThisWorkbook.Worksheets("Output1").Columns(1).NumberFormat = "General"
With ThisWorkbook.Worksheets("Output1")
For i = 2 To lastrowOutput
If ThisWorkbook.Worksheets("Output1").range("A" & i).Value "" Then
moYe = ThisWorkbook.Worksheets("Output1").range("A" & i).Value
MsgBox moYe
End If
If ThisWorkbook.Worksheets("Output1").range("A" & i).Value = "" Then
'ThisWorkbook.Worksheets("Output1").range("A" & i).Value = moYe
ThisWorkbook.Worksheets("Output1").Cells(i, 1).Value = moYe
ThisWorkbook.Worksheets("Output1").Cells(i, 1).NumberFormat = "General"
'ThisWorkbook.Worksheets("Output1").range("A" & i).NumberFormat = "General"
End If
Next i
End With
Es sei hierzu gesagt, dass bei der Ausgabe der String-Variable moYe in der MsgBox das Komma enthalten ist. Ich wollte ausßerdem vor dem Kopieren des Variablenwerts moYe in die jeweiligen Zellen auf Standard umstellen, aber das war dann als Number eingestellt. Falls das von Relevanz ist. Vor Ausführung des Codes ist das Format der Spalte "Month & Year" in den leeren Zellen Number. Dort wo die Werte mit Komma drin stehen, ist das Format Standard. Ich hoffe, ich habe niemanden zu sehr verwirrt und dass mir jemand behilflich sein kann. Vielen Dank im Voraus
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert von String Variable in Zelle schreiben in einer Schleife
23.12.2019 19:07:59
String
Hi Tobias
Versuch mal...
moYe = ThisWorkbook.Worksheets("Output1").range("A" & i).Text
Solange alles Text ist, wäre das Nummernformat Text angebracht. Einmalig auf den ganzen Tabellenbereich angewendet (anstatt innerhalb der Schleife) sollte reichen.
Langfrist lebst du aber evtl. sorgenfreier, wenn du aus dem Text gleich ein echtes Datum machst. Formatiert als "M, YYYY".
cu
Chris
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

Wert von String Variablen in Zellen schreiben mit VBA


Schritt-für-Schritt-Anleitung

In diesem Abschnitt zeigen wir dir, wie du mit VBA den Wert einer String-Variable in eine Zelle schreiben kannst. Angenommen, du hast eine Excel-Tabelle, in der du die Monat-Jahr-Werte in eine bestimmte Spalte übertragen möchtest.

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

  2. Erstelle ein Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.

  3. Füge folgenden Code ein:

    Sub SchreibeWertInZelle()
       Dim moYe As String
       Dim lastrowOutput As Long
       lastrowOutput = ThisWorkbook.Worksheets("Output1").Cells(Rows.Count, 2).End(xlUp).Row
    
       With ThisWorkbook.Worksheets("Output1")
           For i = 2 To lastrowOutput
               If .Range("A" & i).Value <> "" Then
                   moYe = .Range("A" & i).Text
               End If
               If .Range("A" & i).Value = "" Then
                   .Cells(i, 1).Value = moYe
                   .Cells(i, 1).NumberFormat = "General"
               End If
           Next i
       End With
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen und die Werte in die Zellen zu schreiben.


Häufige Fehler und Lösungen

  • Problem: Das Komma in den Werten fehlt.

    • Lösung: Stelle sicher, dass du .Text verwendest, um die String-Variable zu setzen, wie in den Empfehlungen von Chris.
    • Korrigiere den Code:
    moYe = ThisWorkbook.Worksheets("Output1").Range("A" & i).Text
  • Problem: Zellen werden nicht richtig formatiert.

    • Lösung: Vergewissere dich, dass du das Zellenformat vor dem Schreiben des Wertes auf "General" setzt.

Alternative Methoden

Statt mit einer Schleife zu arbeiten, könntest du auch die Range.Value-Eigenschaft verwenden, um mehrere Zellen auf einmal zu bearbeiten. Dies kann die Performance verbessern.

Sub AlternativeMethode()
    Dim moYe As Variant
    Dim lastrowOutput As Long
    lastrowOutput = ThisWorkbook.Worksheets("Output1").Cells(Rows.Count, 2).End(xlUp).Row

    With ThisWorkbook.Worksheets("Output1")
        moYe = .Range("A2:A" & lastrowOutput).Value
        .Range("A2:A" & lastrowOutput).Value = moYe
    End With
End Sub

Praktische Beispiele

Hier sind einige Anwendungsbeispiele:

  1. Einzelne Werte in Zellen schreiben: Du kannst die obigen Methoden verwenden, um spezifische Werte je nach Bedingung in eine Zelle zu schreiben.
  2. Daten aus einer anderen Quelle importieren: Du kannst auch Daten aus einer CSV-Datei oder einer Datenbank in deine Excel-Tabelle importieren und dabei String-Variablen verwenden.

Tipps für Profis

  • Debugging: Nutze MsgBox oder Debug.Print, um den Wert deiner Variablen während der Ausführung zu überprüfen.
  • Datenvalidierung: Überlege, ob du Daten vor dem Schreiben validieren möchtest, um sicherzustellen, dass du keine ungültigen Daten in die Zellen schreibst.
  • Effiziente Schleifen: Vermeide es, in Schleifen ständig auf Zellen zuzugreifen. Lade die Werte in ein Array und bearbeite sie dort, bevor du sie zurückschreibst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Wert in der Zelle bleibt, auch wenn ich die Datei schließe?
Die Werte werden automatisch in der Excel-Datei gespeichert, wenn du die Datei speicherst.

2. Welche Excel-Version benötige ich für die Verwendung von VBA?
VBA funktioniert in den meisten aktuellen Excel-Versionen, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

3. Was muss ich tun, wenn ich Fehler beim Ausführen des Makros bekomme?
Überprüfe deinen Code auf Syntaxfehler und stelle sicher, dass alle Referenzen korrekt sind. Nutze den Debugger, um den Fehler zu lokalisieren.

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