1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Need help with VB Function

Discussion in 'Visual Basic ( VB )' started by gpabyc, Aug 26, 2009.

  1. gpabyc

    gpabyc New Member

    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
     
    Last edited by a moderator: Aug 27, 2009
  2. SaswatPadhi

    SaswatPadhi ~ Б0ЯИ Τ0 С0δЭ ~

    OK. I have corrected the code for you. Here it is :

    Code:
    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.
     
    Last edited: Aug 27, 2009
  3. gpabyc

    gpabyc New Member

    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
     
  4. SaswatPadhi

    SaswatPadhi ~ Б0ЯИ Τ0 С0δЭ ~

    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:
    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:
    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 .. :)
     

Share This Page