2017-05-24 6 views
1

"Application.match"を使用して、シートの列ADに「1」が含まれているかどうかを確認しています。VBAのApplication.match

私のコードを実行しようとするたびに、 "Else"条件は常にTrueです。私は列ADに値 "1"のセルがあるので、 "If"条件に入ることを期待していますが。

列AD内のセルの値は、ほとんどが「Titile & Author Match」という文字列と値「0」を持つAD2という文字列を持つAD1を除いて、式の結果です。

問題は何ですか。それのための解決策は何ですか?

まだ「.match」メソッドを使用するソリューションを提案していただければ幸いです。私の理解から、 ".match"メソッドは範囲内のマッチの相対位置を返すからです。そして、私は後でその値を自分のコードで使うつもりです。

Private Sub CmdLocateDta_Click() 

Dim SearchColumn As Integer 

If Not IsError(Application.Match(1, "AD:AD", 0)) Then 
    SearchColumn = Application.Match(1, "AD", 0) 
    MsgBox "Data has been located." & vbNewLine & _ 
      "You can now input the Lending Information below." 
Else 
    MsgBox "There seems to be no such book in the Database." & _ 
      vbNewLine & "Please re-check your input." 
End If 

End Sub 

答えて

2

両方の一致で検索する範囲を指定する必要があります。

Application.Match(1, ws.range("AD:AD"),0) 

ここで、wsはワークシートです。

+0

が、これは私の問題を解決していただきありがとうございます。 – Karen88

1

問題は、Application.Matchの使用方法です。それはこのようにする必要があります :

If Not IsError(Application.Match(1, Range("AD:AD"), 0)) Then

は、ここで詳細を参照してください。https://msdn.microsoft.com/en-us/library/office/ff835873.aspx

+1

これは私の問題を解決していただきありがとうございます。 – Karen88

+0

@ Karen88 - あなたは大歓迎です。 – Vityata