Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Visual Basic ( VB ) (http://www.go4expert.com/forums/visual-basic/)
-   -   Need help with VB Function (http://www.go4expert.com/forums/help-vb-function-t19184/)

gpabyc 26Aug2009 22:09

Need help with VB Function
 
for some reason I cant get this to work. I need to remove all numbers from the end of a string leaving the ones at the beginning. So for example K1WIST-VED12 would = K1WIST-VED


Code:

Function StripNumber (GetComputerName As String)
  Dim Str As String
    Dim i As Integer, b As Integer
 GetComputerName = Trim(GetComputerName)
 ComputerNameLength = Len(GetComputerName)
    For i = ComputerNameLength To 1  Step -1
        If IsNumeric(Mid(GetComputerName, i, 1)) Then
            Str = (Left(GetComputerName, ComputerNameLength - b)
            b = (b + 1)
        Else StripNumber = Trim(Str)
        End If
  Next i
  Return StripNumber = Trim(Str)
 End Function


SaswatPadhi 27Aug2009 18:32

Re: Need help with VB Function
 
OK. I have corrected the code for you. Here it is :

Code: VB

Function StripNumber (GetComputerName)
    Dim Str As String
    Dim i As Integer, b As Integer
    b = 1
    GetComputerName = Trim(GetComputerName)
    ComputerNameLength = Len(GetComputerName)
    For i = ComputerNameLength To 1  Step -1
        If IsNumeric(Mid(GetComputerName, i, 1)) Then
            Str = Left(GetComputerName, ComputerNameLength - b)
            b = b + 1
        Else
            Exit For
        End If
   Next
   StripNumber = Trim(Str)
End Function


It should work fine.


The code is pretty self-explanatory. But I would just explain one point :
in the else condition of the If block inside the loop, you should use "Exit For" so that the control jumps out of the for loop when thefirst non-numeric character (from end) is encountered.

gpabyc 28Aug2009 00:03

Re: Need help with VB Function
 
Thank you for the reply but Im getting a Microsoft VBScript compilation error: Expected end of statement for the As String and As Integer statements when i remove them that error clears but returns blank

SaswatPadhi 28Aug2009 18:23

Re: Need help with VB Function
 
You should have mentioned that you are using VBScript.
The code I gave would compile fine in VB6.

Anyway, here is the VBScript Code:
Code: VB

Function StripNumber (GetComputerName)
    Dim Str,i,b
    b = 1
    GetComputerName = Trim(GetComputerName)
    ComputerNameLength = Len(GetComputerName)
    For i = ComputerNameLength To 1  Step -1
        If IsNumeric(Mid(GetComputerName, i, 1)) Then
            Str = Left(GetComputerName, ComputerNameLength - b)
            b = b + 1
        Else
            Exit For
        End If
   Next
   If Str = "" And b = 1 Then
      Str = GetComputerName
   End If
   StripNumber = Trim(Str)
End Function


To try the above func, here is a test program:
Code: VB

Dim mStr
mStr = InputBox("Enter a test value")
Msgbox(StripNumber(mStr))
WScript.quit

Function StripNumber (GetComputerName)
    Dim Str,i,b
    b = 1
    GetComputerName = Trim(GetComputerName)
    ComputerNameLength = Len(GetComputerName)
    For i = ComputerNameLength To 1  Step -1
        If IsNumeric(Mid(GetComputerName, i, 1)) Then
            Str = Left(GetComputerName, ComputerNameLength - b)
            b = b + 1
        Else
            Exit For
        End If
   Next
   If Str = "" And b = 1 Then
      Str = GetComputerName
   End If
   StripNumber = Trim(Str)
End Function



The previous code had a very minor bug which return "blank" only when the input text was *purely* alphabetical.
Hope this one is alright.

Tell me if it works .. :)


All times are GMT +5.5. The time now is 18:10.