• 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.

Cellen in formules automatisch voorzien van $

Status
Niet open voor verdere reacties.

Wimterpstra

Nieuwe gebruiker
Lid geworden
17 jun 2015
Berichten
4
Goedendag,

Ik wil cellen in formules automatisch voorzien van het teken $. Hiervoor gebruik ik onderstaande macro:

Sub Absoluut()
Dim c As Range
For Each c In Selection
c.Formula = Application.ConvertFormula(c.Formula, xlA1, xlA1, xlAbsolute)
Next
End Sub


Dit werkt soms niet, ik krijg dan de uitkomst #waarde!.

Macro werkt wel bij:
=((('Prijslijst panelen Solax'!DL21)*J639)*D644)+(C634*F404*D645). Alle cellen worden mooi voor zien van $: =((('Prijslijst panelen Solax'!$DL$21)*$J$639)*$D$644)+($C$634*$F$404*$D$645)

Macro werkt niet bij:
=((('Prijslijst panelen Solax'!DL21+'Prijslijst panelen Solax'!DM21)*J639)*D644)+(C634*F404*D645) de uitkomst is dan #waarde!

Er lijkt dus iets mis te gaan op het moment dat er nog een keer naar een ander tabblad wordt verwezen. 1 x verwijzen gaat goed, 2x niet. Als ik het + teken vervang door een * dat maakt niets uit.

Iemand enig idee hoe dat dit kan?

Daarnaast is het zo dat de macro bij een lege cel ook #waarde! aangeeft. Staat er tekst in een cel dan gebeurt er niets. Omdat ik een blok met vele cellen en ook lege cellen in 1 keer wil selecteren en aanpassen zou het helemaal top zijn dat de macro bij lege cellen niets doet en er ook geen #waarde! inzet.

Dankjewel.

Groeten Wim
 
Laatst bewerkt:
Er is niets mis met deze constructie:
Code:
Sub exhelp_absolute()
Dim rng As Range
 
    For Each rng In Selection
 
        rng.Formula = Application.ConvertFormula _
        (rng.Formula, xlA1, xlA1, xlAbsolute)
 
    Next rng
 
End Sub

Er zit waarschijnlijk een foute verwijzing in je formule
 
Toch lukt het niet

Ik heb vanalles geprobeerd. De macro is hartstikke goed. Maar ik kan niet achterhalen waarom het niet wil. Helaas.
 
DIe tekst en lege cellen-fout kan je opvangen door een check op aanwezigheid van formule in de cel:

Code:
Sub exhelp_absolute()
Dim rng As Range
 
    For Each rng In Selection
      If rng.HasFormula Then
        rng.Formula = Application.ConvertFormula _
        (rng.Formula, xlA1, xlA1, xlAbsolute)
      End If
    Next rng
 
End Sub

En deze code past toch echt wel de opgegeven formule aan naar absolute verwijzingen.
 
Lege cellen gaat goed

Tis ook wat.

Zopas getest. De lege cellen dat gaat nu goed. Daar schrijft hij geen waarde in. Bedankt daarvoor!

Ik snap er echt niets van.

=((('Prijslijst panelen Solax'!DL21+'Prijslijst panelen Solax'!DM21)*J639)*D644)+(C634*F404*D645) = waarde=fout
=((('Prijslijst panelen Solax'!DL21+'Prijslijst panelen Solax'!DM21)*J639)*D644) = goede omzetting met de macro
Als ik handmatig met F4 de gehele formule ((('Prijslijst panelen Solax'!DL21+'Prijslijst panelen Solax'!DM21)*J639)*D644)+(C634*F404*D645) omzet gaat het ook helemaal goed.
Als ik de formule (C634*F404*D645) alleen invoer dus niet gecombineerd gaat het ook goed de macro wijzigt hem dan goed. En de formule geeft dan ook gewoon een uitkomst
Maar gecombineerd geeft hij een fout.

Ik ga nu eerst op bed. Morgen weer een dag.
 
De vraag ansich is niet opgelost. Ik heb handmatig alles aangepast. In die zin is het werk wel aan de kant.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan