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

Array beim Ersetzen verwenden

Forumthread: Array beim Ersetzen verwenden

Array beim Ersetzen verwenden
07.06.2018 11:54:40
Georg
Liebe Mitglieder,
das Thema Array habe ich nicht drauf, würde aber gerne ein bißchen weiterkommen:
Der Code funktinert, allerdings muss jedesmal eingegeben werden, was als Replacement rein soll: Juli, beim nächsten Sheet August etc.
Kann man diese Folge auch in einem Array schreiben: Juli, August,...
und diesen Array hier unten verwenden, so dass ich mir jedesmal die Eingabe ersparen kann? Es sind sehr viele Dateien betroffen, so dass sich "Aufwand" eines Arrays lohnen würde, danke.
Sub ErsetzeMonat()
Dim i As Long
Dim Ersetze As String
For i = 8 To 13
worksheets(i).Activate
Ersetze = Application.InputBox("Eingabe")
range("G6:G36").Select
Selection.Replace What:="Juni", Replacement:=Ersetze, lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachfrage
07.06.2018 12:58:06
Michael
Hallo Schurl!
Hab ich Dich richtig verstanden: Du willst immer in den Blättern 8 bis 13 (also in insgesamt 6 Blättern) einer Arbeitsmappe jeweils das Wort "Juni" im angegebenen Bereich mit je einem anderen Monatsnamen tauschen? D.h. in Blatt 8 wird "Juni" zu "Juli", im Blatt 9 wird "Juni" zu "August", im Blatt 10 wird "Juni" zu "September"? D.h. die Tauschbegriffe im gewünschten Array sollen von "Juli" bis "Dezember" reichen?
Lg
Michael
Anzeige
AW: Nachfrage
07.06.2018 13:01:17
Georg
Hallo Michael, genau so. Wahrscheinlich kann man das auch anders lösen, aber ich wollte mich eben mit den Arrays mal beschäftigen. Grüße G
AW: Dann siehe die AW von Chris, owT
07.06.2018 13:04:14
Chris,
AW: Array beim Ersetzen verwenden
07.06.2018 12:59:25
ChrisL
Hi
Sub strErsetzeMonat()
Dim i As Long, arrMonate As Variant
Dim strErsetze As String
arrMonate = Array("Juli", "August", "September", "Oktober", "November", "Dezember")
For i = 8 To 13
With Worksheets(i)
strErsetze = Application.InputBox("Eingabe")
.Range("G6:G36").Replace What:=arrMonate(i - 8), Replacement:=strErsetze, _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
Next i
End Sub
cu
Chris
Anzeige
Dankeschön
07.06.2018 13:09:31
Georg
..Chris, ich musste nur noch eine Kleinigkeit ändern, die Inputbox wollte ich ja los haben, also auskommentiert und dann
.Range("G6:G36").Replace What:="Juni", Replacement:=arrMonate(1-8),
aber so hab ich jetzt eine Ahnung wie man einen Array verwendet. Gruß G
AW: Dankeschön
07.06.2018 13:16:38
ChrisL
arrMonate = Array("Juli", "August", "September", "Oktober", "November", "Dezember", "Januar")
.Range("G6:G36").Replace What:=arrMonate(i - 8), Replacement:=arrMonate(i - 7)
Anzeige
AW: Dankeschön
07.06.2018 17:55:31
ChrisL
Hi Georg
Zum Verständnis. Array beginnen bei 0 (null)
Zähler i = 8
8 - 8 = 0
MyArray(0) = erster Wert/Monat vom Array
Zähler i = 8
8 - 7 = 1
MyArray(1) = zweiter Wert/Monat vom Array
Wenn man das Array vorher dimensioniert, dann kann man auch bei 1 beginnen.
Dim MyArray(6) As Variant
optional:
Dim MyArray(1 To 7) As Variant
Array können auch mehrdimensional (="virtuelle Tabelle") sein.
Dim MYArray(6, 1) As Variant   '7 Spalten, 2 Zeilen
Übrigens, einfacher und nachhaltiger wird deine Lösung, wenn du gleich alle 12 Monate definierst.
cu
Chris
Anzeige
;
Anzeige

Infobox / Tutorial

Array beim Ersetzen in Excel verwenden


Schritt-für-Schritt-Anleitung

Um ein Array beim Ersetzen von Text in Excel zu verwenden, kannst du den folgenden VBA-Code nutzen. Diese Anleitung zeigt, wie du die Monatsnamen in einem bestimmten Bereich ersetzt, ohne jedes Mal manuell eingeben zu müssen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf „VBAProject (deine_datei.xlsx)“ klickst und „Einfügen“ > „Modul“ wählst.
  3. Füge den folgenden Code in das Modul ein:
Sub strErsetzeMonat()
    Dim i As Long, arrMonate As Variant
    arrMonate = Array("Juli", "August", "September", "Oktober", "November", "Dezember")

    For i = 8 To 13
        With Worksheets(i)
            .Range("G6:G36").Replace What:=arrMonate(i - 8), Replacement:=arrMonate(i - 7), _
            lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        End With
    Next i
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um die Ersetzungen durchzuführen.

Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 9: Index außerhalb des gültigen Bereichs“

    • Lösung: Stelle sicher, dass die Arbeitsblätter 8 bis 13 in deiner Arbeitsmappe existieren. Überprüfe auch, ob die Namen der Blätter korrekt sind.
  • Fehler: „Die Eingabe ist ungültig.“

    • Lösung: Dieser Fehler tritt auf, wenn du in der InputBox keine gültige Eingabe machst. Stelle sicher, dass du die Eingabe korrekt vornimmst oder die InputBox auskommentierst, wenn du die Eingabe nicht benötigst.

Alternative Methoden

Anstelle von VBA kannst du auch Excel-Formeln verwenden, um Text in einem bestimmten Bereich zu ersetzen. Eine Möglichkeit ist die Verwendung von WECHSELN oder Suchen und Ersetzen:

  1. Markiere den Bereich, in dem du den Text ersetzen möchtest.
  2. Drücke Strg + H, um das Dialogfeld „Suchen und Ersetzen“ zu öffnen.
  3. Gib den zu ersetzenden Text ein (z.B. „Juni“) und den neuen Text (z.B. „Juli“).
  4. Klicke auf „Alle ersetzen“.

Diese Methode ist jedoch weniger effizient, wenn du viele Blätter hast.


Praktische Beispiele

Hier sind einige Beispiele für die Verwendung des Codes:

  • Um den Text „Juni“ in den Blättern 8 bis 13 durch die entsprechenden Monatsnamen zu ersetzen, kannst du den oben genannten VBA-Code nutzen.
  • Wenn du das Array erweitern möchtest, kannst du einfach weitere Monatsnamen hinzufügen:
arrMonate = Array("Juli", "August", "September", "Oktober", "November", "Dezember", "Januar", "Februar", "März", "April", "Mai", "Juni")

Tipps für Profis

  • Array-Dimensionierung: Du kannst deine Arrays auch dimensionieren, um mehr Kontrolle über die Indizes zu haben. Beispiel:
Dim MyArray(1 To 12) As Variant
  • Mehrdimensionale Arrays: Wenn du komplexere Datenstrukturen benötigst, kannst du mehrdimensionale Arrays verwenden. Dies kann besonders nützlich sein, wenn du mehrere Werte pro Monat speichern möchtest.
Dim MYArray(12, 1) As Variant   ' 12 Monate, 2 Zeilen

FAQ: Häufige Fragen

1. Kann ich das Array anpassen? Ja, du kannst das Array nach Belieben erweitern oder ändern, um andere Monatsnamen oder Werte zu verwenden.

2. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code sollte in den meisten modernen Excel-Versionen ab Excel 2010 funktionieren. Achte darauf, die Makros in deiner Excel-Anwendung zu aktivieren.

3. Wie kann ich den Code anpassen, um andere Texte zu ersetzen? Ändere einfach die Werte im What-Parameter der Replace-Methode, um andere Texte zu ersetzen.

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