View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Maxi[_2_] Maxi[_2_] is offline
external usenet poster
 
Posts: 94
Default Replacing a value in the string variable

Thanks Ron, I don't think the function can be reduced more to improve
on process time. Right?

somethinglikeant, it looks like you did not understand my question but
thanks for trying.



Ron Rosenfeld wrote:
On 12 Aug 2006 01:32:50 -0700, "Maxi" wrote:

I have the following numbers in range A1:J1
5 6 15 23 42 43 46 66 71 73

In my VBA code I have a sring variable strA which has a value "1, 2, 3,
4, 5"

I want to replace the value of strA with numbers in range A1:J10.

that means strA which was "1, 2, 3, 4, 5" earlier should become "5, 6,
15, 23, 42" that is cells(0,1).value, cells(0,2).value,
cells(0,3).value, cells(0,4).value, cells(0,5).value

similarly "3, 5, 6, 8, 10" should become "15, 42, 43, 66, 73" that is
cells(0,3).value, cells(0,5).value, cells(0,6).value, cells(0,8).value,
cells(0,10).value

I want a shortest code available, preferably a one liner although I am
not sure whether it is possible or not.

Thanks
Maxi


Perhaps this will give you some ideas as to how to implement your algorithm
into code:

================================================== =
Option Explicit
Sub setup()
Const strA As String = "1, 2, 3, 4, 5"
Const strB As String = "3, 5, 6, 8, 10"

Debug.Print Rpl(strA)
Debug.Print Rpl(strB)

End Sub

Function Rpl(str)

Dim c As Range
Dim i As Long
Dim temp
Dim res()

Dim rg As Range

Set rg = [A1:J1]

temp = Split(str, ",")
For i = 0 To UBound(temp)
temp(i) = Val(temp(i))
Next i

ReDim res(UBound(temp))
For i = 0 To UBound(temp)
res(i) = rg(1, Val(temp(i)))
Next i

Rpl = Join(res, ", ")

End Function
===================================


--ron