The following called the dummy routine twice (???!!!) so you may want to set a counter to run it only once. Possibly others can see why, or offer a better solution.
This assumes that there is some consistency in your string structure.
Code:Sub dummy(msgnumber As Integer) MsgBox msgnumber End Sub Sub main() Dim SubName As String Dim ParseSubName 'As String Dim ParseSubNum 'As Long Dim x As Long SubName = "dummy(1234)" x = Application.Find("(", SubName) ParseSubName = Left(SubName, x - 1) ParseSubNum = Val(Right(SubName, Len(SubName) - x)) Evaluate (ParseSubName & "(" & ParseSubNum & ")") End Sub