プロが教えるわが家の防犯対策術!

いろいろすっ飛ばしますがコードで
”型が一致しません” のメッセージが出るので、添削してください・・・

rg.Value = Application.Index(Range(Cells(rw, 3), Cells(rw + 67, 3)), Application.Match("" * WH * "", Range(Cells(rw, 3), Cells(rw + 67, 3)), 0) + 1).Value

おバカ丸出しなのは自覚しています・・・

A 回答 (5件)

MATCH関数には、ワイルドカードはなかったはずです。



Sub TestFind()
 Dim Rng As Range
 Dim rw As Long
 Dim c As Range
 Dim rg As Variant
 rw = 10
 Set Rng = Cells(rw, 3).Resize(68)
 Set c = Rng.Find("*WH*", , xlValues, xlWhole, xlByColumns) 'ワイルドカード
 If Not c Is Nothing Then
  rg = c.Offset(1).Value '見つけたセルの一つ下のセル
  MsgBox rg & ": " & c.Offset(1).Address(0, 0)
 Else
  MsgBox "見つかりません。", vbExclamation
 End If
End Sub
    • good
    • 0
この回答へのお礼

丁寧にありがとうございました!

お礼日時:2019/09/29 19:14

tatsu99様


どうも、ご指摘、ありがとうございます。
 =MATCH(検査値,検査範囲,照合の種類)
「ワイルドカードはなかったはず」と書きましたが、一抹の不安がありました。先程、Excelの関数辞典でも、ワイルドカードを使える条件というものを確認しましたし、データの最後尾を検索する特別な方法も思い出しました。
    • good
    • 0

>WindFaller様


「MATCH関数には、ワイルドカードはなかったはずです。」とのことですが、ちょっと気になって確認してみました。
添付図でC1へ
=MATCH("*aa8*",A1:A10,0)
を入力すると8が表示されます。
また、以下のマクロを実行すると、B1へ8が表示されます。
Sub MATCH試験()
Dim val As Variant
val = Application.Match("*aa8*", Range("A1:A10"), 0)
Cells(1, "B").Value = val
End Sub

よって、ワイルドカードは使用可能と思われますが、如何でしょうか。
「vbaでエクセル関数」の回答画像4
    • good
    • 0

パット見、


ワイルドカードを使いたいのでしょうか?
Application.Match("*WH*", Range(Cells(rw, 3), Cells(rw + 67, 3)), 0) + 1).Value

検証してませんが、、では?
    • good
    • 0

"" * WH * ""


上記の個所がおかしいのでそれが原因かと。
どのように修正するかですが、情報不足のため、回答できません。
WHはどのように変数を定義し、実行時、WHに何が入っていますか。WHに"ABC"が設定されて場合、検索値はどのような値にしたいのですか。
3列のセルを検索したいようですが、3列には、どのような値が設定されているのですか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!