[Excel/VBA] Macro stopt bij cell beginnend met "=" symbool

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 04:19
Ik probeer een set van karakters te escapen die zich bevinden in een bepaalde excel column. De text in deze column (enkele 1000-en rows) wordt gezet dmv een 'database query'. Bij sommige van de text entries begint de text met een aantal "=" karakters. Zodra de text in een column begint met een '=' karakter stopt de macro met het escapen, zonder een error melding te produceren. Alle rows onder desbetreffende row worden gewoonweg niet meer verwerkt. Daarboven ging alles goed.

Ik vermoed dat de macro de text interpreteert als een formule maar heb hier niets over gevonden (vba ignore formula in cell). Ik hoop dat iemand mij kan uitleggen waarom dit fout gaat en hoe ik dit het beste kan oplossen. Alvast bedankt voor het meedenken :)

Ik maak gebruik van Office 2007

vb van een cell waar de macro op faalt:
code:
1
2
3
4
==============================================================
PROBLEM:

The loader functionallity ...


De macro die ik gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub ESCAPE1()
'
' ESCAPE Macro 1
'

'
    Range("I:I").Select
    Selection.Replace What:=Chr(9), Replacement:="/t", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(10), Replacement:="/n", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(13), Replacement:="/r", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(38), Replacement:="&", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(34), Replacement:=Chr(39), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="''", Replacement:=""", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(39), Replacement:="'", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(60), Replacement:="<", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=Chr(62), Replacement:=">", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik denk dat je hier tegen een beperking van excel's selection.replace bent aangelopen, die replaced altijd alsof er general content wordt teruggezet. Dit faalt bij foute formules. :p Wat wel kan: numberformat van de betrokken cellen op tekst hebben staan ("@"), en dan vba's replace gebruiken in combinatie met for each/value, dus iets als:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
Sub ESCAPE1()
    Dim where As Range
    Set where = Range("A:A").SpecialCells(xlCellTypeConstants)
    ' if needed where.NumberFormat = "@"
    Dim c As Range
    For Each c In where
        c.Value2 = Replace(c.Value2, "&", "&")
        '...
    Next
End Sub

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 04:19
Ga ik proberen! thanks :)

(Nu ook al een probleem (lees:werkt niet) met een andere selection replace, om gek van te worden!)

  • Simkin
  • Registratie: Maart 2000
  • Laatst online: 04:19
@pedorus, bedankt! Je oplossing werkt, heel erg fijn :)

Nog even geprobeerd om "Selection.NumberFormat = "@"" aan mijn oorspronkelijke macro toe te voegen maar dat haalt niets uit, ben erg blij met je oplossing

[ Voor 58% gewijzigd door Simkin op 12-08-2010 13:10 ]