VBA - mangler lille ændring i kode
Hej alleVBA-koden nedenfor gør at man kan vise mellemregninger som også er refereret til andre celler, hvilket er meget smart.
Eks:
A1 = 2
A2 = 3
A3 = A1+A2
A4 =udregn(A3)
Nu viser A4: '=2+3
Dog er mit problem at jeg ikke ved hvordan jeg modificere koden så den kan vise værdier fra andre celler der er "låst" eks. $A$1
Eks.:
A1 = 2
A2 = 3
A3 = A1+$A$2
A4 =udregn(A3)
Nu viser A4: '=2+$A$2 hvilke er her hvor koden mangler at blive optimeret.
Det vil være en stor hjælp hvis i kunne hjælpe mig.
På forhånd tak!
VBA-koden:
-----------------------------------
Function Udregn(rngF As Range) As String
Dim vRefs As Variant, lngRef As Long
Udregn = "'" & rngF.Formula
vRefs = Split(PatternExtract(Udregn, "[A-Z]{1,2}[0-9]+", , -1))
For lngRef = LBound(vRefs) To UBound(vRefs) Step 1
Udregn = Replace(Udregn, vRefs(lngRef), Round(Evaluate(vRefs(lngRef)), 3), 1, -1, vbTextCompare)
Next lngRef
End Function
'RegExp Function
Function PatternExtract(strF As String, strPattern As String, _
Optional boolIgnoreCase As Boolean = True, Optional lngInstance As Long = 1) As Variant
Dim RegExp As Object, RegExpMatch As Object
On Error Resume Next
Set RegExp = CreateObject("vbscript.regexp")
With RegExp
.Global = True
.IgnoreCase = boolIgnoreCase
.Pattern = strPattern
End With
Set RegExpMatch = RegExp.Execute(strF)
If lngInstance > RegExpMatch.Count Then
PatternExtract = ""
Else
If lngInstance = -1 Then
For lngInstance = 1 To RegExpMatch.Count Step 1
PatternExtract = PatternExtract & " " & RegExpMatch(lngInstance - 1)
Next lngInstance
PatternExtract = Replace(PatternExtract, " ", "", 1, 1)
Else
PatternExtract = RegExpMatch(lngInstance - 1)
End If
End If
Set RegExpMatch = Nothing
Set RegExp = Nothing
End Function
-----------------------------------
