Convert string to int if string is a number

前端 未结 6 1102
余生分开走
余生分开走 2020-12-05 06:08

I need to convert a string, obtained from excel, in VBA to an interger. To do so I\'m using CInt() which works well. However there is a chance that the string

6条回答
  •  情深已故
    2020-12-05 06:57

    Try this: currentLoad = ConvertToLongInteger(oXLSheet2.Cells(4, 6).Value) with this function:

    Function ConvertToLongInteger(ByVal stValue As String) As Long
     On Error GoTo ConversionFailureHandler
     ConvertToLongInteger = CLng(stValue)  'TRY to convert to an Integer value
     Exit Function           'If we reach this point, then we succeeded so exit
    
    ConversionFailureHandler:
     'IF we've reached this point, then we did not succeed in conversion
     'If the error is type-mismatch, clear the error and return numeric 0 from the function
     'Otherwise, disable the error handler, and re-run the code to allow the system to 
     'display the error
     If Err.Number = 13 Then 'error # 13 is Type mismatch
          Err.Clear
          ConvertToLongInteger = 0
          Exit Function
     Else
          On Error GoTo 0
          Resume
     End If
    End Function
    

    I chose Long (Integer) instead of simply Integer because the min/max size of an Integer in VBA is crummy (min: -32768, max:+32767). It's common to have an integer outside of that range in spreadsheet operations.

    The above code can be modified to handle conversion from string to-Integers, to-Currency (using CCur() ), to-Decimal (using CDec() ), to-Double (using CDbl() ), etc. Just replace the conversion function itself (CLng). Change the function return type, and rename all occurrences of the function variable to make everything consistent.

提交回复
热议问题