Удалить начальные нули из текстового поля VBA - PullRequest
3 голосов
/ 27 июня 2019

Пользователь вводит только числовые значения в текстовом поле tbID, в моем файле это значение столбца сохраняется как числовое. Однако, если пользователь вводит 00120 вместо 120. После попытки удалить начальные нули, кажется, перед 120 есть пробел.

Когда я ввожу Criteria1:="120", это работает

tbIDf = Cint(tbID) 'Debug.Print tbIDf gives " 120" and renders my filter criteria to a blank
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=IDN, Criteria1:="tbID"

Как убрать как начальные нули, так и " " перед 120?

Ответы [ 2 ]

4 голосов
/ 27 июня 2019

Вот мысль, я хотел бы убедиться, что данные, которые попадают на ваш лист, на самом деле правильные данные, пригодные для использования.Для этого вы можете использовать:

Trim(Val(tbID))

Использование Val вернет двойное значение, игнорируя нечисловые значения, 120.В качестве альтернативы CLng также является возможностью возврата длинного значения.Только не используйте CInt, так как нет необходимости использовать целые числа (диапазон только от -32,768 до 32,767)

Функция TRIM удалит начальные и конечные пробелы.

Вы можете / должны также реализовать событие нажатия клавиш, описанное здесь , чтобы убедиться, что вводятся только числовые значения.

enter image description here

1 голос
/ 27 июня 2019

Это должно работать:

Option Explicit

Sub test()

    'just for testing (this comes from your textbox)
    Dim tbID As String
    tbID = "00120"

    If IsNumeric(tbID) Then 'test if numeric to prevent errors
        Dim MyCriteria As String
        MyCriteria = CStr(CLng(tbID))

        ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=IDN, Criteria1:=MyCriteria 
    End If
End Sub

Если не использовать Trim(CStr(CLng(tbID)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...