Thema Datum  Von Nutzer Rating
Antwort
Rot Schleife soll Spalten durchlaufen
19.10.2020 14:46:10 Gast80743
NotSolved
19.10.2020 23:55:57 Gast27006
NotSolved

Ansicht des Beitrags:
Von:
Gast80743
Datum:
19.10.2020 14:46:10
Views:
838
Rating: Antwort:
  Ja
Thema:
Schleife soll Spalten durchlaufen
Hallo Zusammen,
 
ich habe schon hier ein Beitrag zu dem Thema: https://www.vba-forum.de/View.aspx?ziel=62548-Pr%C3%BCfen_von_Werten_innerhalb_einer_Zeile aber ich befürchte, dass meine Frage nicht gelesen wird, da der Status "gelöst" ist.
Kurz zum Code: Das Programm soll jede Spalte bzw. verbundene Spalte durchlaufen und prüfen ob "Apfel" und "Birne" vorhanden sind, falls ja, dann soll Apfel durch Apfelkuchen ersetzt werden.
ich habe zu dem Thema noch eine Frage und zwar, wie könnte ich den Code von Gast27006 bearbeiten, damit dieser auch für die beigefügte Tabelle passt?Momentan, bricht der Code die Schleife ab, sobald eine Spalte ohne verbundene Zelle (hier Spalte D) auftaucht und prüft die nachfolgenden Spalten nicht mehr (hier Spalte C).

A

D

C

Apfel

Birne

Melone

Kirsche

Birne

Ananas

Birne

Melone

Kirsche

Apfel

Ananas

Melone

Birne

Apfel

Ananas

Apfel

Birne

Ananas

Apfel

Kirsche

Melon

 
 
 
Hat jemand von euch eine Idee, wie man das Problem beheben kann?
Über jeden Tipp und jede Hilfe bin ich sehr dankbar.
 
Vorab vielen Dank und viele Grüße
 
Hier der Code von Gast27006:
Option Explicit
Option Compare Text

Sub Ersetze2()
     
    Dim iZeile As Long, iSpalte As Long, iCheck As Integer
    Dim sSuch1 As String, sSuch2 As String, sErsetz As String
    Dim rngBereich As Excel.Range
    Dim rngZelle As Excel.Range
     
    sSuch1 = "apfel"
    sSuch2 = "Birne"
    sErsetz = "Apfelkuchen"
     
    Set rngZelle = Range("A1")
     
    Do While rngZelle.MergeCells
       
      'Bereich referenzieren
      ' in der Spalte von rngZelle, nach der letzter Zelle mit Inhalt suchen
      ' (von unten nach oben)
      Set rngBereich = rngZelle.MergeArea.Resize(Cells(Rows.Count, rngZelle.Column).End(xlUp).Row - rngZelle.Row + 1)
       
      '2 = erste DATENzeile / erste Zeile ist jeweils der verbundene Bereich ('A' / 'D' / 'C')
      For iZeile = 2 To rngBereich.Rows.Count
           
          iCheck = 0
          For iSpalte = 1 To rngBereich.Columns.Count
            'Hier wird nach 'Apfel' in 'Ein Apfel ist super-lecker. Birnen sind auch ok.' gesucht
            ' würde allerdings auch auf 'Ein Apfelkuchen ist super-lecker. Ein Birnenkuchen tut es aber auch.'
            ' passen!!
            If rngBereich(iZeile, iSpalte).Value Like ("*" & sSuch1 & "*") Then iCheck = (iCheck Or 1)
            If rngBereich(iZeile, iSpalte).Value Like ("*" & sSuch2 & "*") Then iCheck = (iCheck Or 2)
            'Sobald wir wissen das sSuch1 + sSuch2 einmal vorhanden sind,
            ' können wir die Suche hier beenden
            If iCheck = 3 Then Exit For
          Next
           
          If iCheck = 3 Then
              'ACHTUNG: (siehe oben)
              '       'Apfel' -| 'Apfel' := 'Apfelkuchen' |-> 'Apfelkuchen'
              ' 'Apfelkuchen' -| 'Apfel' := 'Apfelkuchen' |-> 'Apfelkuchenkuchen'
              rngBereich.Rows(iZeile).Replace _
                  What:=sSuch1, _
                  Replacement:=sErsetz, _
                  LookAt:=xlPart, _
                  SearchOrder:=xlByRows, _
                  MatchCase:=False
          End If
           
      Next
       
      'da rngZelle ein verbundener Bereich ist,
      'springen wir hier nicht nur eine (1) Zelle nach rechts,
      'sondern um die Anzahl von 1 * rngZelle.MergeArea.Columns.Count
      Set rngZelle = rngZelle.Offset(0, 1)
    Loop
   
End Sub

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Schleife soll Spalten durchlaufen
19.10.2020 14:46:10 Gast80743
NotSolved
19.10.2020 23:55:57 Gast27006
NotSolved