troubleshooting Question

VBA Replace Function - What am I missing?

Avatar of Elena Quinn
Elena Quinn asked on
VBAVisual Basic Classic
3 Comments1 Solution203 ViewsLast Modified:
Hi All,

I suspect this would be fairly simple, but I am missing it.  I am simply trying to take a number that is formatted in a time format and changing them all to seconds, so I can work with the same units.  The original value is formatted with decimals, like 1.234.567.890, and it will be designated at (ns), (us), (ms), etc.  So the first thing I need to do is replace all except the first decimal.  I am trying to use the replace function for that.  But it is replacing all, despite the starting number I am entering.
Dim myArray() As Variant
Dim NumText As String
Dim DecPos As Integer
Dim i as long

i = 0
ReDim myArray(Selection.Count)

For Each cel In Selection
    myArray(i) = cel.Value
    i = i + 1

For i = LBound(myArray) To UBound(myArray)
NumText = myArray(i)
DecPos = InStr(1, NumText, ".")
If DecPos > 0 Then
    If InStr(1, (Right(NumText, Len(NumText) - DecPos)), ".") > 0 Then
        NumText = Replace(NumText, ".", "", Start:=DecPos + 1)
    End If
End If

So NumText starts as '1.412.877.593 (s)', but after the replace function, it is '412877593 (s)'.  What happened to the "1." at the beginning?

NorieSenior Associate
Join our community to see this answer!
Unlock 1 Answer and 3 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 3 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros