Vba 比较大于“0”的精确整数;“长整数”;

Vba 比较大于“0”的精确整数;“长整数”;,vba,excel,type-conversion,comparison,Vba,Excel,Type Conversion,Comparison,我需要在Excel 2013中找到更好的VBA数据类型,以便在两个10位正整数之间进行更精确的比较。我已经找到并尝试了CULng,但这个版本中似乎不存在这种情况。而且,CLng没有这些数字所需的范围 我有一个电话号码数据库(10位数),需要一种方法来比较两个确切的数字。我数据库中的一些条目是列出范围的第一个和最后一个的字符串,所以我不能只使用a=B,然后(做点什么)。我尝试过使用CSng,但它使用指数格式(5555559100和5555559150都变成了5.555559e+09)来舍入数字。这

我需要在Excel 2013中找到更好的VBA数据类型,以便在两个10位正整数之间进行更精确的比较。我已经找到并尝试了
CULng
,但这个版本中似乎不存在这种情况。而且,
CLng
没有这些数字所需的范围

我有一个电话号码数据库(10位数),需要一种方法来比较两个确切的数字。我数据库中的一些条目是列出范围的第一个和最后一个的字符串,所以我不能只使用a=B,然后(做点什么)。我尝试过使用
CSng
,但它使用指数格式(5555559100和5555559150都变成了5.555559e+09)来舍入数字。这两个数字即使不匹配,也会被视为相等。在这段代码之前,我已经将搜索TN简化为数字,但它仍然是一个字符串值

Private Sub FindTN()

Dim TN As String
Dim begin  As Single
Dim last As Single
Dim RowNo As Long

Sheet1.Range("A1").Value = "5555559100TO5555559125"
Sheet1.Range("A2").Value = "5555559150TO5555559175"
Sheet1.Range("A3").Value = "5555559160"

TN = "5555559160"

For Each entry In Sheet1.Range("A1:A3")
    If Len(entry.Value) = 10 And entry.Value = TN Then
        RowNo = entry.Row
        Debug.Print "RowNo = " & RowNo

    'Find beginning and ending values of a range
    ElseIf Len(entry.Value) > 10 And InStr(11, entry.Value, "TO") = 11 Then
        begin = CSng(Left(entry.Value, 10))
        last = CSng(Right(entry.Value, 10))

        'Search within range
        If CSng(TN) >= begin And CSng(TN) <= last Then
            RowNo = entry.Row
            Debug.Print "RowNo = " & RowNo
        End If
    End If
Next entry

End Sub

像这样将变量固定为double

Private Sub FindTN()

Dim TN As String
Dim begin  As Double 'Single
Dim last As Double ' Single
Dim RowNo As Long

Sheet1.Range("A1").Value = "5555559100TO5555559125"
Sheet1.Range("A2").Value = "5555559150TO5555559175"
Sheet1.Range("A3").Value = "5555559160"

TN = "5555559160"

For Each entry In Sheet1.Range("A1:A3")
    If Len(entry.Value) = 10 And entry.Value = TN Then
        RowNo = entry.Row
        Debug.Print "RowNo = " & RowNo

    'Find beginning and ending values of a range
    ElseIf Len(entry.Value) > 10 And InStr(11, entry.Value, "TO") = 11 Then
        begin = CDbl(Left(entry.Value, 10))
        last = CDbl(Right(entry.Value, 10))

        'Search within range
        If CDbl(TN) >= begin And CDbl(TN) <= last Then
            RowNo = entry.Row
            Debug.Print "RowNo = " & RowNo
        End If
    End If
Next entry

End Sub
Private Sub FindTN()
将TN变暗为字符串
Dim以双“单”开头
最后变暗为双“单”
不长
表1.范围(“A1”).Value=“555555 9100到55559125”
表1.范围(“A2”).Value=“5555559150至55559175”
表1.范围(“A3”).Value=“5555559160”
TN=“5555559160”
表1.范围(“A1:A3”)中的每个条目
如果Len(entry.Value)=10,entry.Value=TN,则
RowNo=条目。行
调试。打印“RowNo=”&RowNo
'查找范围的起始值和结束值
ElseIf Len(entry.Value)>10,InStr(11,entry.Value,“TO”)=11,则
begin=CDbl(左(entry.Value,10))
last=CDbl(右(entry.Value,10))
'在范围内搜索

如果CDbl(TN)>=开始,CDbl(TN)将每件事都更改为双精度,并将
CSng
更改为
CDbl
使用十进制数据类型。不带小数,最多可容纳79228162514264337593543950335个整数
Private Sub FindTN()

Dim TN As String
Dim begin  As Double 'Single
Dim last As Double ' Single
Dim RowNo As Long

Sheet1.Range("A1").Value = "5555559100TO5555559125"
Sheet1.Range("A2").Value = "5555559150TO5555559175"
Sheet1.Range("A3").Value = "5555559160"

TN = "5555559160"

For Each entry In Sheet1.Range("A1:A3")
    If Len(entry.Value) = 10 And entry.Value = TN Then
        RowNo = entry.Row
        Debug.Print "RowNo = " & RowNo

    'Find beginning and ending values of a range
    ElseIf Len(entry.Value) > 10 And InStr(11, entry.Value, "TO") = 11 Then
        begin = CDbl(Left(entry.Value, 10))
        last = CDbl(Right(entry.Value, 10))

        'Search within range
        If CDbl(TN) >= begin And CDbl(TN) <= last Then
            RowNo = entry.Row
            Debug.Print "RowNo = " & RowNo
        End If
    End If
Next entry

End Sub