2017-01-24 135 views
0

我有一個索引匹配公式,它在我搜索帶有字母的字符串時正常工作,但在與字符串一起使用時返回1004錯誤數字。我試着將application.workheetfunction.match改爲application.match,它返回錯誤13:類型不匹配。我認爲問題在於它無法匹配只包含數字的字符串,但我需要一種方法來實現。並混合(例如:6262 HE)格式:因爲它包含的數字(6128 EX)使用VBA中的索引/匹配搜索數字時類型不匹配

application.worksheetfunction.index(sheet4.range("AMD[Product Number]"), _ 
    application.WorksheetFunction.Match(sheet1.Searchbox.Value,sheet4.Range("AMD[Model]"),0)) 

AMD [模型]列格式化爲一般。 我不認爲它是相關的,但AMD [產品編號]列格式化爲一般。

有什麼辦法可以重寫代碼使其工作?

編輯:這裏是一些更多的代碼。我不知道它會有多大用處。上面的代碼是孤立的問題。

Dim SB As String, SBn As Boolean, FirstPN As String, FirstPNQTY As Long 

SB = Sheet1.Searchbox.Text 
      SBn = IsNumeric(SB) 
      Select Case SBn 
       Case True 
        FirstPN = Application.WorksheetFunction.Index(Sheet4.Range("AMD[Part Number]"), _ 
             Application.WorksheetFunction.Match(SB, Sheet4.Range("AMD[Model]"), 0)) 
        FirstPNQTY = Application.WorksheetFunction.Index(Sheet4.Range("AMD[Qty]"), _ 
              Application.WorksheetFunction.Match(FirstPN, Sheet4.Range("AMD[Part Number]"), 0)) 
        With Sheet1 
          .tTitle5 = "Select Next PN" 
          .tField5.Text = FirstPN 
          .bTitle5 = "Current PN QTY" 
          .bField5.Text = FirstPNQTY 
         End With 
+0

這使得與收盤paranthessis一個錯誤,我(寧)的猜測。它應該是這樣的...... .... sheet4.Range(「AMD [Model]」),0))' –

+0

我錯誤地鍵入了問題中的公式,但它在工作簿中格式正確。 – Scionara

+0

以何種方式定義了「搜索框」屬性? –

回答

0

SB是String類型。如果它的值是數字,它仍然是一個字符串,只是看起來像一個數字。如果AMD[Model]中的數字數據實際上是數字,則Match不會找到它。

解決辦法是改變SB變型方案,並投了字符串向數字

Dim SB As Variant 
'....  
If IsNumeric(SB) Then 
    SB = Val(SB) 
End If 
+0

這工作。非常感謝你! – Scionara