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

Ansicht des Beitrags:
Von:
Gast27006
Datum:
19.10.2020 23:55:57
Views:
504
Rating: Antwort:
  Ja
Thema:
Schleife soll Spalten durchlaufen

Erster Gedanke wäre Abbruch-Kriterium der Schleife ändern, d.h. wenn man sich mit dem Makro auch mal befassen würde...

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.Value <> ""
        
      '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
19.10.2020 14:46:10 Gast80743
NotSolved
Blau Schleife soll Spalten durchlaufen
19.10.2020 23:55:57 Gast27006
NotSolved