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

Waarde van formules tonen

Status
Niet open voor verdere reacties.

Colombe

Gebruiker
Lid geworden
28 jan 2001
Berichten
754
Vroeger had ik in Lotus een invoegtoepassing waarmee ik separaat de waarde van iedere celverwijzing of formule in cellen kon zien. Dus voor de goede orde: +D4+D5*D7 kon worden getoond als +20+2*45. Het uitendelijke resultaat 110 zag je natuurlijk gewoon in het werkblad. Kan buitengewoon handig zijn!
Weet iemand of zoiets ook voor Excel bestaat of heeft er misschien een makro voor?
 
In beperkte mate kan dat via het vergrootglas op de werkbalk "Formules controleren".

Wigi
 
Bedankt Wigi, nooit gezien die mogelijkheid. Zoals je zegt in beperkte mate is het wat ik bedoel, maar ik kan er wel mee uit de voeten.
Ik neem aan dat er geen andere mogelijkheden bestaan?
 
Mits te gaan programmeren kan je wel wat bereiken.

Bv. een message box voor als je op een cel staat met een formule erin.

Wigi
 
Ik zal wat code schrijven om te zien hoe ver ik zo op het eerste zicht kan komen.
 
Na zelf code geschreven te hebben, ook zeer mooie code gevonden op internet van Excel MVP Bill Manville:

Code:
Sub FindPrecedents()
' written by Bill Manville
' With edits from PaulS
' this procedure  finds the  cells which are the direct precedents of the active cell
    Dim rLast As Range, iLinkNum As Integer, iArrowNum As Integer
    Dim stMsg As String
    Dim bNewArrow As Boolean
    Application.ScreenUpdating = False
    ActiveCell.ShowPrecedents
    Set rLast = ActiveCell
    iArrowNum = 1
    iLinkNum = 1
    bNewArrow = True
    Do
        Do
            Application.Goto rLast
            On Error Resume Next
            ActiveCell.NavigateArrow TowardPrecedent:=True, ArrowNumber:=iArrowNum, LinkNumber:=iLinkNum
            If Err.Number > 0 Then Exit Do
            On Error GoTo 0
            If rLast.Address(external:=True) = ActiveCell.Address(external:=True) Then Exit Do
            bNewArrow = False
            If rLast.Worksheet.Parent.Name = ActiveCell.Worksheet.Parent.Name Then
                If rLast.Worksheet.Name = ActiveCell.Parent.Name Then
                    ' local
                    stMsg = stMsg & vbNewLine & Selection.Address
                Else
                    stMsg = stMsg & vbNewLine & "'" & Selection.Parent.Name & "'!" & Selection.Address
                End If
            Else
                ' external
                stMsg = stMsg & vbNewLine & Selection.Address(external:=True)
            End If
            iLinkNum = iLinkNum + 1  ' try another  link
        Loop
        If bNewArrow Then Exit Do
        iLinkNum = 1
        bNewArrow = True
        iArrowNum = iArrowNum + 1  'try another arrow
    Loop
    rLast.Parent.ClearArrows
    Application.Goto rLast
    MsgBox "Precedents are" & stMsg
    Exit Sub
End Sub

Wigi
 
Wiml, ik heb er ook een mooie gevonden maar het enige nadeel is dat hij alle formules vervangt. Misschien dat jij hier een oplossing voor hebt, want dit gaat iets boven mijn petje denk ik.

Code:
Option Explicit
Dim Results(10) As String
Dim Resultops(10) As String
Dim ops As String
Dim theformula As String
Dim dump As Integer
Dim dumpstr As String
Dim opsno As Integer
 
Sub formula_breakdown()
    Dim max_char As Integer
Dim char_counter As Integer
Dim cell_str As String
Dim rCell As Range
For Each rCell In Cells.SpecialCells(xlCellTypeFormulas)
    cell_str = rCell.Formula
    max_char = Len(cell_str)
    Call cellresult(cell_str, 1, max_char, 0)
    dumpstr = "'"
    For dump = 1 To 10
        dumpstr = dumpstr & Results(dump) & Resultops(dump)
    Next dump
    rCell.Value = dumpstr
Next rCell
End Sub
 
Sub cellresult(cell_str As String, char_counter As Integer, max_char As Integer, resultcount As Integer)
    If char_counter > max_char Then Exit Sub
    ops = "*/+-"
    For opsno = 1 To Len(ops)
        If Mid(cell_str, char_counter, 1) = Mid(ops, opsno, 1) Then
            resultcount = resultcount + 1
            Range("a1000").Formula = Left(cell_str, char_counter - 1)
            On Error GoTo formerror
            Results(resultcount) = Range("a1000").Value
            Resultops(resultcount) = " " & Mid(ops, opsno, 1) & " "
            cell_str = "=" & Right(cell_str, max_char - char_counter)
            max_char = Len(cell_str)
            char_counter = 1
        End If
    Next opsno
    If char_counter = max_char Then
        resultcount = resultcount + 1
        Range("a1000").Formula = Left(cell_str, char_counter)
        On Error GoTo formerror
        Results(resultcount) = Range("a1000").Value
        Resultops(resultcount) = " End "
    End If
    char_counter = char_counter + 1
    Call cellresult(cell_str, char_counter, max_char, resultcount)
    Exit Sub
formerror:
    Results(resultcount) = "Formula Error"
    Resume Next
End Sub

Mvg

Rudi
 
Laatst bewerkt:
Wim, jouw code is vrijwel precies wat ik bedoelde en het werkt véél gemakkelijker dan de F9 truc, die MS geeft. Ik heb verschillende formules geprobeerd, waarbij ik merkte dat in zoekfuncties er wel veel info komt te staan, die het niet erg overzichtelijk maakt. Misschien is dat nog -mogelijk als optie- te onderdrukken?
De code van Bill Manville geeft bij mij alleen de celverwijzingen en niet de waarden. Die van het Warme bakkertje geeft bij foutmeldingen, waarmee ik niet uit de voeten kan, want ik ben nauwelijks op de hoogte met de programmeertaal.
Leuk trouwens dat jullie er zo induiken!
 
Is dit wat je zoekt?

(uit excel 2003)

Extra
Formules controleren
Controle modus voor formules
(sneltoets ctrl t)
 
Is dit wat je zoekt?

(uit excel 2003)

Extra
Formules controleren
Controle modus voor formules
(sneltoets ctrl t)

Volgens mij niet. Dit toont wel formules, maar vervangt daarin niet verwijzingen naar cellen door de waarden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan