• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

macro doet iets raars

Status
Niet open voor verdere reacties.

Renee123

Gebruiker
Lid geworden
8 feb 2009
Berichten
65
Iemand wel eens gehad dat een macro met andere uitkomsten komt dan wanneer je het zelf uitvoert?
Ik heb namelijk dat probleem nu en ik snap niet hoe het komt (laat staan dat ik dus op zoek kan naar een oplossing).

Het zit zo... Ik heb een bestand met daarin allemaal getallen met een punt erin (bijv. 120.13 en 193.09). Nou wil ik wat berekeningen uitvoeren en laat ik via 'zoeken en vervangen' alle punten omzetten in comma's. Wanneer ik dit "handmatig" doe (dus via ctrl-H et etc), dan worden netjes alle punten door comma's vervangen en kan ik daarna m'n draaitabel er op los laten. Wanneer ik ditzelfde echter doe via een macro (zie code hieronder), dan worden ook alle punten in comma's veranderd, maar dan krijg ik ook deze melding:
Het getal in deze cel is opgemaakt als tekst of wordt vooraf gegaan door een apostrof.
Als ik nu de draaitabel probeer te maken dan krijg ik overal #DEEL/0!

Ik heb geprobeerd om de celeigenschappen aan te passen, maar dan werkt de draaitabel nog steeds niet...
Iemand een idee waardoor dit komt en beter nog: wat ik er aan kan doen? :)


PHP:
    Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
Je kunt voor elke cel die tekst bevat op F2 drukken en dan Enter
of
zet een 1 ergens in je werkblad, klik op kopieren, selecteer de cellen die van tekst naar getal moeten veranderen, ga maar Bewerken, Plakken speciaal en selecteer de optie Vermenigvuldigen, OK.
of indien je Excel 2007 gebruikt:
Selecteer de cellen die tekst bevatten en klik op het uitroepteken dat naast de cel verschijnt, selecteer de optie Converteer naar getal

Groeten,

M.
 
Je kunt voor elke cel die tekst bevat op F2 drukken en dan Enter
of
zet een 1 ergens in je werkblad, klik op kopieren, selecteer de cellen die van tekst naar getal moeten veranderen, ga maar Bewerken, Plakken speciaal en selecteer de optie Vermenigvuldigen, OK.
of indien je Excel 2007 gebruikt:
Selecteer de cellen die tekst bevatten en klik op het uitroepteken dat naast de cel verschijnt, selecteer de optie Converteer naar getal

Groeten,

M.

Het via F2 omzetten werkt inderdaad, maar dat betekent dat ik alle cellen handmatig om moet gaan zetten. Heeft niet mijn voorkeur ;) Kan dit ook via de macro?

Het omzetten met een 1 en dan vermenigvuldigen werkt ook als ik het handmatig doe. Als ik exact deze procedure opneem in een macro blijkt het ineens toch weer niet te werken (lijkt hetzelfde probleem te zijn als waar ik mee begon).

Excel 2007 heb ik helaas niet.

Ik heb als bijlage een rar-bestand bijgevoegd met daarin het bestand met de getallen (output.odt) die je gewoon in excel kan inlezen en ook een bestand met daarin de macro (macro.xls). Ik hoop dat iemand het probleem kan oplossen.

Tnx!

p.s. wat ik dus 'gewoon' wil is vanuit dat odt-bestand de draaitabel maken.
 
Laatst bewerkt:
Zie code.

Code:
Sub vervangen()
For Each xcell In Selection

xcell.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
              
              xcell.Value = xcell.Value * 1
          Next xcell

End Sub
 
Zie code.

Code:
Sub vervangen()
For Each xcell In Selection

xcell.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
              
              xcell.Value = xcell.Value * 1
          Next xcell

End Sub

Super! Zo werkt het precies zoals ik wil :)

DANK!
 
Kan ook korter, minder tekst betekent vaak minder kans op fouten. Maakt bij korte macro niet uit, maar wanneer ze groter worden wat makkelijk zoeken.

Code:
Sub vervangen()
For Each xcell In Selection
              
      xcell.Value = Replace(xcell.Value,".",",") * 1 
Next

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan