2013-05-07 121 views
0

我偶然發現這個有用的VBA函數:Find a row from Excel table using VBA搜索欄和返回行的數值

Function GetRow(TableName As String, ColumnNum As Long, Key As Variant) As Range 
    On Error Resume Next 
    Set GetRow = Range(TableName) _ 
     .Rows(WorksheetFunction.Match(Key, Range(TableName).Columns(ColumnNum), 0)) 
    If Err.Number <> 0 Then 
     Err.Clear 
     Set GetRow = Nothing 
    End If 
End Function 

此功能適用於文本完全正常。不過,我在搜索數字方面遇到嚴重問題。搜索整數時,我從來沒有回過癮。

我使用的功能是這樣的:

If Not Userform_Input.Text = "" Then 
     Set ref = GetRow("table", 3, Userform_Input.Text) 

     If Not ref Is Nothing Then 
      variable_a = Cells(ref.Row, 2).value 
     End If 
    End If 

的代碼我看不出問題展望。還有其他人嗎?

+2

你總是傳遞字符串到你的'GETROW()'方法。 'Userform_Input.Text'將始終是一個String。 – markblandford 2013-05-07 10:40:38

回答

1

可以嘗試如下修改代碼:

If Not Userform_Input.Text = "" Then 
    Set ref = GetRow("table", 3, cint(Userform_Input.Text)) ' force numeric 

    If Not ref Is Nothing Then 
     variable_a = Cells(ref.Row, 2).value 
    End If 
End If 

也許,這將有助於

+0

哦,哇!這非常有幫助!謝謝! – Nico 2013-05-07 11:18:10