Excel宏类型的转换

本文介绍了一系列用于Visual Basic中不同类型变量转换的自定义函数。这些函数可以将输入的Variant类型变量安全地转换为Currency、Double、Integer、Long、Single、String、Date及Boolean等类型,并在遇到无效输入时返回默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Function gcVBCur(ByVal vVariable As Variant) As Currency
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   gcVBCur = CCur(0)
   
   'Validation
   If IsNull(vVariable) Or Not IsNumeric(vVariable) Then
      Exit Function
   End If

   'Set return function value
   gcVBCur = CCur(vVariable)

End Function

Function gdVBDbl(ByVal vVariable As Variant) As Double
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   gdVBDbl = CDbl(0)

   'Validation
   If IsNull(vVariable) Or Not IsNumeric(vVariable) Then
      Exit Function
   End If

   'Set return function value
   gdVBDbl = CDbl(vVariable)

End Function

Function gnVBInt(ByVal vVariable As Variant) As Integer
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   gnVBInt = CInt(0)

   'Validation
   If IsNull(vVariable) Or Not IsNumeric(vVariable) Then
      Exit Function
   End If

   'Set return function value
   gnVBInt = CInt(vVariable)

End Function

Function glVBLng(ByVal vVariable As Variant) As Long
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   glVBLng = CLng(0)

   'Validation
   If IsNull(vVariable) Or Not IsNumeric(vVariable) Then
      Exit Function
   End If

   'Set return function value
   glVBLng = CLng(vVariable)

End Function

Function ggVBSng(ByVal vVariable As Variant) As Single
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   ggVBSng = CSng(0)

   'Validation
   If IsNull(vVariable) Or Not IsNumeric(vVariable) Then
      Exit Function
   End If

   'Set return function value
   ggVBSng = CSng(vVariable)

End Function

Function gsVBStr(ByVal vVariable As Variant) As String
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   gsVBStr = ""

   'Validation
   If IsNull(vVariable) Then
      Exit Function
   End If

   'Set return function value
   gsVBStr = CStr(vVariable)

End Function

Function gtVBDate(ByVal vVariable As Variant) As Date
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set return function value
   gtVBDate = DateValue(gtVBDateTime(vVariable))

End Function

Function gtVBTime(ByVal vVariable As Variant) As Date
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set return function value
   gtVBTime = TimeValue(gtVBDateTime(vVariable))

End Function

Function gtVBDateTime(ByVal vVariable As Variant) As Date
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   gtVBDateTime = CDate(0)

   'Declare
   Dim ldtmDateTime     As Date
  
   'Set default value
   ldtmDateTime = CDate(0)
  
   Select Case VarType(vVariable)
      Case vbDate
         ldtmDateTime = vVariable
      Case vbSingle, vbDouble, vbInteger, vbLong
         ldtmDateTime = CDate(vVariable)
      Case vbString
         If IsDate(vVariable) Then
            ldtmDateTime = CDate(vVariable)
         End If
      Case Else
   End Select
  
   'Set return function value
   gtVBDateTime = ldtmDateTime

End Function

Function gbVBBool(ByVal vVariable As Variant) As Boolean
'-------------------------------------------------------------------------------------------
'Note    : Integra-t.com global Function
'-------------------------------------------------------------------------------------------
   On Error Resume Next
  
   'Set default function value
   gbVBBool = False

   'Set return function value
   Select Case VarType(vVariable)
      Case vbInteger, vbLong, vbSingle, vbDouble, vbCurrency, vbDecimal
         gbVBBool = CBool(vVariable)
      Case vbDate
         If vVariable <> CDate(0) Then
            gbVBBool = True
         End If
      Case vbString
         If IsNumeric(vVariable) Then
            gbVBBool = CBool(Val(vVariable))
         ElseIf Len(CStr(vVariable)) > 0 Then
            Select Case UCase$(vVariable)
               Case "TRUE", "YES", "Y"
                  gbVBBool = True
            End Select
         End If
      Case vbBoolean
         gbVBBool = vVariable
      Case Else
   End Select

End Function


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值