Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4949 / 13646 ツリー ←次へ | 前へ→

【53408】「Application.Match」について 初心者Z 08/1/9(水) 15:09 質問[未読]
【53410】Re:「Application.Match」について あゆたろう 08/1/9(水) 16:03 発言[未読]
【53412】Re:「Application.Match」について Jaka 08/1/9(水) 16:12 発言[未読]
【53414】Re:「Application.Match」について あゆたろう 08/1/9(水) 16:34 お礼[未読]
【53438】Re:「Application.Match」について 初心者Z 08/1/11(金) 11:33 お礼[未読]

【53408】「Application.Match」について
質問  初心者Z  - 08/1/9(水) 15:09 -

引用なし
パスワード
   シートに存在する文字列(A1〜A5)をTextBox1.Textの中の文字列を「Application.Match」で照らし合わせているのですが、

  If IsError(Application.Match(TextBox1.Text, Range("A1:A5"), 0)) Then
   MsgBox ("見つかりませんでした。")
   Exit Sub
  Else
   MsgBox ("見つかりました。")
  End If

このTextBox1.Textにあたる部分が「数値」になるとエラーを返してしまうのか、「見つかりませんでした。」のメッセージボックスが表示されてしまうのです。
「見つかりました。」を返して欲しいのに・・・
また、その数値が検索対象範囲(A1〜A5)内にあることは確実です。
どなたかこの現象を解明できる方、また解消する方法をご存知の方、教えて頂けませんか?

【53410】Re:「Application.Match」について
発言  あゆたろう  - 08/1/9(水) 16:03 -

引用なし
パスワード
   ▼初心者Z さん:
えらそうに答える実力はありませんが、
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  If IsError(Application.Match(TextBox1.Text, Range("A1:A5"), 0)) Then
    MsgBox ("見つかりませんでした。")
  Exit Sub
  Else
   MsgBox ("見つかりました。")
  End If
End Sub
で出来ました。

Sub wwww()
Dim mt As String

mt = Sheet1.TextBox1.Text
  If IsError(Application.Match(mt, Sheet1.Range("A1:A5"), 0)) Then
   MsgBox ("見つかりませんでした。")
  Exit Sub
  Else
   MsgBox ("見つかりました。")
  End If
End Sub
もできました。

TextBox1はSheet1にあるものとしました。

【53412】Re:「Application.Match」について
発言  Jaka  - 08/1/9(水) 16:12 -

引用なし
パスワード
   TextBox1に書いた物は、基本的に文字列です。
それに加えて、セルに書いてあるのもが数値だと、Matchで一致することはないです。

テキストボックスの中身を、一旦数値型の変数に入れて
その変数で探せば良いです。

また、直に
application.Match(Clng(textbox1.value),range(・・・・・
とか。

ちょっと微妙。
application.Match(Val(textbox1.value),range(・・・・・

【53414】Re:「Application.Match」について
お礼  あゆたろう  - 08/1/9(水) 16:34 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます。
私は "a" でテストしていました。
Jaka さんには以前にも回答をいただきました。勉強になります。

という事で

Dim mt As String⇒As Long とか As Double
に修正してください。

【53438】Re:「Application.Match」について
お礼  初心者Z  - 08/1/11(金) 11:33 -

引用なし
パスワード
   ▼初心者Z さん:
>シートに存在する文字列(A1〜A5)をTextBox1.Textの中の文字列を「Application.Match」で照らし合わせているのですが、
>
>  If IsError(Application.Match(TextBox1.Text, Range("A1:A5"), 0)) Then
>   MsgBox ("見つかりませんでした。")
>   Exit Sub
>  Else
>   MsgBox ("見つかりました。")
>  End If
>
>このTextBox1.Textにあたる部分が「数値」になるとエラーを返してしまうのか、「見つかりませんでした。」のメッセージボックスが表示されてしまうのです。
>「見つかりました。」を返して欲しいのに・・・
>また、その数値が検索対象範囲(A1〜A5)内にあることは確実です。
>どなたかこの現象を解明できる方、また解消する方法をご存知の方、教えて頂けませんか?

返答ありがとうございます。
おかげさまで解決できました。
いずれにせよ、データ型を変換しなくてはならなかったのですね・・・

4949 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free