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

Forumthread: String in Array String ersetzen

String in Array String ersetzen
23.10.2018 16:48:22
Oisse
Hallo Zusammen,
ich habe eine Spalte, in der in mehreren Zeilen Text steht. Nun befinden sich in diesen Zeilen diverse Platzhalter, die ich später durch die richtigen Werte, z.B. Namen ersetzen möchte, jedoch nicht in dieser Originalfassung, sondern ich möchte den Inhalt dieser Spalte Zeile für Zeile in ein Array laden und in diesem Array die Platzhalter mit den richtigen Werten, die in VBA dann vorhanden sind ersetzen.
Hoffentlich habe ich es verständlich rüber gebracht.
Sinn hinter dem Ganzen ist folgender:
In den Spalten steht untereinander jeweils Text für eine Email. In jeder Spalte ein anderer vorgegebener Text.
In diesen Zeilen kommen eben Platzhalter vor, die dann durch die korrekten Werte, z.B. der Name, erscheinen soll.
Kann man also in einem Satz, der in einem Array steht, einen Begriff suchen und durch einen anderen ersetzen? Wenn ja, bitte wie?
L.G.
Oisse
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String in Array String ersetzen
23.10.2018 17:10:28
onur
text(i)=replace(text(i),"Platzhalter1","Max Mustermann")
AW: String in Array String ersetzen
23.10.2018 18:07:01
Oisse
Danke, klappt super.
Noch einen schönen Abend
AW: String in Array String ersetzen
23.10.2018 17:39:47
UweD
Hallo
so?
Sub test()
    Dim TextArr, TMP
    Dim ReadFile As String, Newfile As String
    Dim txtLines
    
    'Dialog öffnen 
    ReadFile = Application.GetOpenFilename("Text Files (*.txt),")
    'oder ReadFile = Test.txt" 
    
    Newfile = "X:\Temp\Neue Datei.txt"
    
    
    Close #1
    '1. Öffnen der Datei 
    Open ReadFile For Input As #1
    'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren 
    'Zähler auf 0 setzen 
    txtLines = 0
    Do While Not EOF(1) ' Schleife bis Dateiende. 
        Input #1, TMP ' Hilfsvariable zum einlesen verwenden 
        'Zähler hochzählen 
        txtLines = txtLines + 1
    Loop
    'Schliessen der Datei weil Dateiende erreicht wurde 
    Close #1
    
    Redim TextArr(txtLines)
    
    '2. Öffnen der Datei 
    Open ReadFile For Input As #1
    Open Newfile For Output As #2
    txtLines = 0
    
    
    Do While Not EOF(1) ' Schleife bis Dateiende. 
        Input #1, TextArr(txtLines)
        
        'suchen nach Variablen und ersetzen durch Text 
        Select Case True
            Case InStr(TextArr(txtLines), "VariableName") > 0
                TextArr(txtLines) = Replace(TextArr(txtLines), "VariableName", "NeuerName")
                
            Case InStr(TextArr(txtLines), "VariablePLZ") > 0
                TextArr(txtLines) = Replace(TextArr(txtLines), "VariablePLZ", "Deine PLZ")
                
            Case Else
             'nichts 
        End Select
        
        'wegschreiben 
            Print #2, TextArr(txtLines)
        
        'Zähler hochzählen 
        txtLines = txtLines + 1
    Loop
    
    'Schliessen der Datei weil Dateiende erreicht wurde 
    Close #2
    Close #1

End Sub

LG UweD
Anzeige
AW: String in Array String ersetzen
23.10.2018 18:08:09
Oisse
Mein Dank auch an dich.
Ich nehm lieber das von onur, ist kürzer und übersichtlicher für mich.
Schönen Abend noch
AW: String in Array String ersetzen
23.10.2018 18:30:39
UweD
Das kannst du doch gar nicht vergleichen
Der Code von Onur ist nur der Part zum Tauschen von Textteilen
Der ist bei mir auch drin.
Das ganze drum herum ist das Einlesen in eine Array und das Abspeichern in eine neue Datei.
Anzeige
AW: String in Array String ersetzen
23.10.2018 18:53:03
onur
Sei doch nicht beleidigt!
Abgesehen davon: dein Code macht eine externe Textdatei auf und bearbeitet Diese.
Davon war jedoch nie die Rede gewesen: "In den Spalten steht untereinander jeweils Text für eine Email. In jeder Spalte ein anderer vorgegebener Text".
ich bin nicht beleidigt..
24.10.2018 08:38:27
UweD
Hallo
..Er hat aber geschrieben:
&GT&gt ich möchte den Inhalt dieser Spalte Zeile für Zeile in ein Array laden
dafür hab ich was gebaut


&gt&gt und in diesem Array die Platzhalter mit den richtigen Werten, die in VBA dann vorhanden sind ersetzen.
Das ist das, was du und ich auch erledigt haben.
LG UweD
Anzeige
AW: ich bin nicht beleidigt..
24.10.2018 10:09:46
Oisse
Hallo UweD,
da hab ich ja ganz schön was angestellt. Tut mir echt leid, dass du dir wegen mir soviel Arbeit und Mühe gemacht hast, das ist mir jetzt erst bewusst geworden. Ich schätze das wirklich sehr! Leider habe ich mich wohl unglücklich ausgedrückt. Ich hab tatsächlich nur diese eine einzige Zeile gesucht, alles andere hatte ich mir schon zurecht gebastelt. Deswegen auch meine Antwort.
Ich werde versuchen mich zukünftig klarer zu formulieren, damit nicht unnötig viel Zeit für die Antworten drauf gehen. Also nochmals viiiielen herzlichen Dank für deine Mühe.
Herzliche Grüße
Oisse
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

String in Array String ersetzen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen String in einem Excel VBA Array zu ersetzen, kannst Du die folgenden Schritte befolgen:

  1. Ein neues Modul erstellen: Öffne Excel und gehe zu "Entwicklertools" > "Visual Basic". Füge ein neues Modul hinzu.

  2. VBA-Code einfügen: Verwende den folgenden VBA-Code, um den Inhalt einer Spalte in ein Array zu laden und Platzhalter zu ersetzen:

    Sub ErsetzePlatzhalter()
       Dim TextArr() As String
       Dim i As Long
       Dim Platzhalter As String
       Dim NeuerWert As String
    
       ' Beispiel: Platzhalter und neuer Wert definieren
       Platzhalter = "Platzhalter1"
       NeuerWert = "Max Mustermann"
    
       ' Array mit Werten aus einer Spalte füllen
       With ThisWorkbook.Sheets("Tabelle1")
           For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
               ReDim Preserve TextArr(1 To i)
               TextArr(i) = .Cells(i, 1).Value
           Next i
       End With
    
       ' Platzhalter im Array ersetzen
       For i = LBound(TextArr) To UBound(TextArr)
           TextArr(i) = Replace(TextArr(i), Platzhalter, NeuerWert)
       Next i
    
       ' Ausgabe der neuen Werte in eine andere Spalte
       With ThisWorkbook.Sheets("Tabelle1")
           For i = LBound(TextArr) To UBound(TextArr)
               .Cells(i, 2).Value = TextArr(i) ' Ausgabe in Spalte B
           Next i
       End With
    End Sub
  3. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Platzhalter in der ersten Spalte zu ersetzen.


Häufige Fehler und Lösungen

  • Fehler: "Typen sind nicht kompatibel"

    • Lösung: Stelle sicher, dass die Variablen korrekt deklariert sind und die Typen übereinstimmen.
  • Fehler: "Index außerhalb des Bereichs"

    • Lösung: Überprüfe die Grenzen des Arrays, insbesondere beim Verwenden von LBound und UBound.

Alternative Methoden

Eine alternative Methode, um einen String in einem Array in VBA zu ersetzen, ist die Verwendung von Join und Split, um ein Array in einen String umzuwandeln und Platzhalter zu ersetzen:

Dim Text As String
Text = Join(TextArr, vbCrLf) ' Array zu String
Text = Replace(Text, Platzhalter, NeuerWert) ' Platzhalter ersetzen
TextArr = Split(Text, vbCrLf) ' String zurück zu Array

Praktische Beispiele

Hier sind einige praktische Beispiele, um den Umgang mit Excel VBA Array Strings zu veranschaulichen:

  1. E-Mail-Vorlagen: Wenn Du E-Mail-Vorlagen mit Platzhaltern hast, kannst Du diese einfach durch die richtigen Werte ersetzen, bevor Du die E-Mails versendest.

  2. Berichte: In Berichten, die aus einer Datenbank generiert werden, können Platzhalter wie "Name", "Datum" usw. durch echte Werte ersetzt werden.


Tipps für Profis

  • Verwende Option Explicit: Damit stellst Du sicher, dass alle Variablen deklariert sind, was die Fehlersuche erleichtert.
  • Nutze Application.ScreenUpdating = False: Dies verbessert die Leistung beim Arbeiten mit großen Arrays, da es das Bildschirm-Rendering während der Ausführung deaktiviert.
  • Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler zu verwalten und das Skript stabiler zu machen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Platzhalter gleichzeitig ersetzen?
Du kannst eine Schleife über ein Array von Platzhaltern und deren neuen Werten erstellen und für jeden Platzhalter den Replace-Befehl aufrufen.

2. Funktioniert das auch in Excel 365?
Ja, der gezeigte VBA-Code funktioniert in Excel 365 sowie in älteren Excel-Versionen, die VBA unterstützen.

3. Kann ich ein Array mit mehr als einer Dimension verwenden?
Ja, Du kannst Dim TextArr(1 To n, 1 To m) As String verwenden, um ein mehrdimensionales Array zu erstellen. Achte darauf, beim Zugriff auf die Elemente die entsprechenden Indizes zu verwenden.

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