[Excel] Cel 'updaten' na macro search&replace

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

  • Leftblank
  • Registratie: Juni 2004
  • Nu online
Omdat ik met 'n Excel sheet bezig ben die (financiele) gegevens importeert van de website van een derde, ben ik aan 't knoeien met VBA macro's om de boel te automatiseren. De gegevens worden namelijk herkent door Excel als 'tekst' in de vorm van '$23.45', wat veranderd moet worden in een cel van 't type 'financieel' met numerieke data.

Om dit voor elkaar te krijgen ben ik met 'n macro begonnen die de data ophaalt en vervolgens de boel vervangt, welke hieronder staat.
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Vervangen()
'
' Vervangen Macro
'
' Refresh alle externe data
    Workbooks("Inkomsten.xls").Worksheets("Bron").Activate
    Range("B1:B200").Activate
    ThisWorkbook.RefreshAll
' Vervang de $ en punten zodat de data numeriek wordt.
    Cells.Replace What:="$", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
' Rebuild alle inhoud; werkt helaas niet
    Application.CalculateFullRebuild
End Sub


Het probleem hiermee is dus dat Excel sommige cellen niet direct herkent als numeriek, waardoor er wel 'n getal in komt te staan, maar dit vervolgens pas de 'USD' prefix krijgt zodra je een actie zoals F2-enter uitvoert.

Een mogelijke oplossing is natuurlijk om 'n loop in te bouwen en alle cellen stuk voor stuk door te lopen, maar dit is bijzonder traag waardoor ik eigenlijk hoop op 'n andere oplossing; ideeën zijn meer dan welkom!

Verwijderd

ergens in een cel de waarde 1 plaatsen, deze kopiëren en dan plakken speciaal->vermenigvuldigen (of delen) over het hele gebied. deze actie kan je eventueel opnemen en bij inbouwen in de bestaande macro.

  • Leftblank
  • Registratie: Juni 2004
  • Nu online
Verwijderd schreef op donderdag 17 mei 2007 @ 23:15:
ergens in een cel de waarde 1 plaatsen, deze kopiëren en dan plakken speciaal->vermenigvuldigen (of delen) over het hele gebied. deze actie kan je eventueel opnemen en bij inbouwen in de bestaande macro.
Dat is 'n mogelijkheid wellicht ja, maar dan moet de macro als nog alle cellen doorlopen wat niet echt positief is voor de snelheid, neem ik aan.

Verwijderd

Leftblank schreef op donderdag 17 mei 2007 @ 23:57:Dat is 'n mogelijkheid wellicht ja, maar dan moet de macro als nog alle cellen doorlopen wat niet echt positief is voor de snelheid, neem ik aan.
euhm, dit is een paste-actie over het hele gebied in 1 keer en wordt meestal in milliseconden (microseconden voor 200 cellen) uitgevoerd. probeer het eens uit!

  • Leftblank
  • Registratie: Juni 2004
  • Nu online
Verwijderd schreef op vrijdag 18 mei 2007 @ 00:09:
[...]
euhm, dit is een paste-actie over het hele gebied in 1 keer en wordt meestal in milliseconden (microseconden voor 200 cellen) uitgevoerd. probeer het eens uit!
Het lijkt inderdaad een super oplossing, helaas werkt 't niet zodra ik 't in een macro prop; alle kommagetallen worden niet herkend en blijven gewoon staan, ook na 't vermenigvuldigen met 1. Helaas werkt 't niet dus :/

[ Voor 37% gewijzigd door Leftblank op 18-05-2007 19:46 ]


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 18:55

Reptile209

- gers -

Helpt het als je een
code:
1
ActiveSheet.Calculate
aan het eind van je macro toevoegt? Die zou je sheet moeten herberekenen, en dan wellicht ook de opmaak e.d. goed zetten.

Zo scherp als een voetbal!


  • Leftblank
  • Registratie: Juni 2004
  • Nu online
Reptile209 schreef op zaterdag 19 mei 2007 @ 10:36:
Helpt het als je een
code:
1
ActiveSheet.Calculate
aan het eind van je macro toevoegt? Die zou je sheet moeten herberekenen, en dan wellicht ook de opmaak e.d. goed zetten.
Bedankt voor de tip, maar helaas werkt ook dat niet; de boel lijkt ververst te worden, maar de foutieve cellen worden niet meegepakt :/
Pagina: 1