Мне нужно найти лучший тип данных VBA в Excel 2013, чтобы я мог сделать более точное сравнение между двумя положительными 10-значными целыми числами. Я нашел и попробовал CULng
, но в этой версии этого, похоже, не существует. Кроме того, CLng
не имеет диапазона, необходимого для этих чисел.
У меня есть база телефонных номеров (10 цифр), и мне нужен способ сравнить два точных числа. Некоторые записи в моей БД являются строками, перечисляющими первый и последний диапазон, поэтому я не могу просто использовать If A = B Then (сделать что-то). Я пытался использовать 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
Должно совпадать только для строк 2 и 3, но вместо этого получается
RowNo = 1
RowNo = 2
RowNo = 3