从文本框VBA中删除前导零

时间:2019-06-27 07:03:28

标签: excel vba

用户仅在文本框名称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 个答案:

答案 0 :(得分:4)

这是一个想法,我将确保将其放入工作表的数据实际上是正确的可用数据。为此,您可以使用:

1, 2, 32

使用Val将返回一个双精度值,而忽略非数字值# imports necessary import datetime as dt # raw data to make dataframe raw_data = { 'name': ['Wrt', 'Grt', 'frt', 'srt', 'crt'], 'country': ['Ind', 'China', 'France', 'Scottland', 'china'], 'Join Date': ['1-2-2016', '3-2-2015', '8-3-2017', '9-4-2018', '9-7-2016'], 'End date': ['8-9-2017', '12-6-2018', 'continuing', 'continuing', '7-8-2018'] } pdf = pd.DataFrame(raw_data) # convert the dates into timestamps pdf['join_date'] = pdf['Join Date'].apply(lambda x: dt.datetime.strptime(x, '%m-%d-%Y')) pdf['end_date'] = pdf['End date'].apply(lambda x: dt.datetime.strptime(x, '%m-%d-%Y') if x is not 'continuing' else None) # calculate diff pdf['diff'] = pdf.apply(lambda x: str(x['end_date'] - x['join_date']).split(' ')[0] if x['end_date'] is not pd.NaT else 'continuing', axis=1) # display result pdf.head() 。另外,CLng也有可能返回长值。只是不要使用Trim(Val(tbID)) ,因为不需要使用整数(范围从-32,768到32,767)

TRIM函数将删除前导和尾随空格。

您也可以/应该实施here中所述的按键事件,以确保仅输入数字值。

enter image description here

答案 1 :(得分:1)

这应该有效:

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)))

相关问题