Microsoft Excel

Herbers Excel/VBA-Archiv

Makro bleibt stehen

Betrifft: Makro bleibt stehen von: Stoffel
Geschrieben am: 13.09.2004 16:14:08

Hallo zusammen, mein Makro bleibt vor einer scheinbar problematischen Zeile stehen. Die Datei liegt auf dem Server https://www.herber.de/bbs/user/10847.xls. Vor Zeile 2 bleibt das Makro stehen. Ich kann nicht erkennen, woran das liegt. Danke für eine Antwort, Stoffel

Sub Stoffel()
    Sheets("Tabelle1").Cells.Replace What:="##", Replacement:=Chr(10), _
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
      SearchFormat:=False, ReplaceFormat:=False
End Sub

  


Betrifft: AW: Makro bleibt stehen von: Axel
Geschrieben am: 13.09.2004 18:48:38

Hallo Stoffel,

das Problem ist der Inhalt der Zelle F3. Diese enthält 989 Zeichen.

Nach meinen Tests darf der Zellinhalt + Suchstring + Ersetzungsstring max. 913 Zeichen betragen.

Du kannst das einfach nachvollziehen, indem du die Zelle auswählst und dann per Hand die Ersetzung durchführst (über <Strg>h). Es erscheint dann die Fehlermeldung "Formel ist zu lang"

Bei Verwendung von VBA-Code zum Ersetzen über Replace() erscheint dann keine Fehlermeldung und die Ersetzung wieder einfach terminiert.

Unbefriedigend aber leider eine Tatsache.

Gruß
Axel


  


Betrifft: AW: Makro bleibt stehen von: Reinhard
Geschrieben am: 13.09.2004 18:54:20

Hi Stoffel,
lass mal searchformat und replaceformat weg, die finde ich bei mir gar nicht, xl2000.
Weiterhin ist Zelle F3 mit 989 Zeichen anscheinend zu groß, kann an replace liegen oder am verfügbaren Speicher *mutmaß*
Beim nachfolgenden Makro tritt bei mir der fehler bei 912 auf .
Sub Stoffel()
    Range("A10") = ""
    For n = 1 To 1000
    Range("B10") = n
    Range("A10") = Range("A10") & "##"
    Range("A10").Replace What:="##", Replacement:=Chr(10), _
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
      
Next n
End 
Sub 



Dieses Makro läuft ohne Fehlermeldung, aber die "##" in F3 bleiben bestehen, muss noch jmd verbessern:
Sub Makro1()
    For Each Zelle In UsedRange.Cells
    If Len(Zelle.Value) < 900 Then
        Zelle.Replace What:="##", Replacement:=Chr(10), LookAt:=xlPart, _
                        SearchOrder:=xlByRows, MatchCase:=False
    Else
        satz = Zelle.Value
        n = 1
        While n
            satz = Left(satz, n - 1) & Chr(10) & Mid(satz, n + 2)
            n = InStr(n, satz, "##")
        Wend
    End If
    Next Zelle
End Sub

Gruß
Reinhard


  


Betrifft: AW: Makro bleibt stehen von: Hans W. Herber
Geschrieben am: 14.09.2004 11:16:56

Hallo,

das Problem liegt in der Tat in der Textlänge. Verwende dieses Makro:
Sub Ersetzen()
   Dim rng As Range
   For Each rng In ActiveSheet.UsedRange.Cells
      rng.Value = WorksheetFunction.Substitute(rng.Value, "##", Chr(10))
   Next rng
End Sub

Gruss hans


 

Beiträge aus den Excel-Beispielen zum Thema "Makro bleibt stehen"