[[20151112111106]] 『ハイフン有無関係無しの検索について』(まろん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ハイフン有無関係無しの検索について』(まろん)

 こんにちは、現在VBA勉強中で下記のようなことで止まっています。

やりたいこと
msgboxへの入力文字を検索
ただし、"-"があってもなくてもOK

色々見たのですが、

Sub 検索()

    Dim oRange As Range
    Dim sValue As String

    sValue = InputBox("検索する番号?")

    Set oRange = Cells.Find(What:=sValue _
                          , After:=ActiveCell _
                          , LookIn:=xlFormulas _
                          , LookAt:=xlPart _
                          , SearchOrder:=xlByRows _
                          , SearchDirection:=xlNext _
                          , MatchCase:=False _
                          , MatchByte:=False _
                          , SearchFormat:=False)

    If oRange Is Nothing Then
       MsgBox sValue & "は見つかりませんでした" _
            , vbOKOnly + vbInformation _
            , "検索結果"
    Else
       oRange.Activate
    End If
End Sub

これで全角半角/大文字小文字/一部一致でOKまではできました。
ただ、郵便番号で"-"を入れる人入れない人がいることが予想され
あってもなくても検索できるように考えています。

こういうことは可能なのでしょうか?
ちなみに検索対象は"100-0001"のように"ハイフン"有りで入力されています。

<例>
100-0001 → 100-0001でヒット
1000001  → 100-0001でヒット

すいませんが、どうぞよろしくご教授ください。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 検索領域には、必ず xxx-yyyy と入力されている。
 InputBoxでの指定では xxx-yyyy と入力する人もいるけど xxxyyyy と入力する人もいる。
 xxxxyyyy で入力した場合も検索可能にしたい。
 こういうことですか?

 で、必ず 3桁-4桁 なんですか?

 もし、そうであれば、InputBox の入力から - を消したうえで、あらためて xxx-yyyy に組み立てて
 それで検索ということでよろしいのでは?

(β) 2015/11/12(木) 11:28


 で、この質問は

[[20151031033056]] 『検索キーについて』(あん)

 これと、関連があるのでしょうか?

(β) 2015/11/12(木) 11:32


β様

 [[20151031033056]] 『検索キーについて』(あん) について
申し訳ございません。
こちらを参考にしましたが、進んでなかったのと
横から書いていいのか分からなかったので、改めて投稿してしまいました。

私ので申し訳ございませんでした。

(まろん) 2015/11/12(木) 12:45


 で、私のコメントで解決ということでいいのでしょうか?

 念のため、InputBox の下に

    If sValue = "" Then Exit Sub    'キャンセルボタン

    sValue = Replace(sValue, "-", "")
    sValue = Left(sValue, 3) & "-" & Mid(sValue, 4)

 こうして試してみてください。

(β) 2015/11/12(木) 13:10


β様

 ご返答いただいておりながら遅くなり大変失礼しました。

いただいた情報で郵便番号については上手くいきました。
念のためのキャンセルもお気遣いありがとうございました。

ちなみに郵便番号携帯が電話番号に置き換えた場合も組み合わせでいけるのでしょうか。
※その場合、mid関数ではなく…??
aaa-bbbb-cccc

でも、郵便番号形態はこれでいけました。
大変、ありがとうございました。

しかし、関数・VBAは奥が深いというか、まだまだ分かっていませんでした。
もっともっと勉強が必要です。

(おたま) 2015/11/17(火) 01:11


 なぜ質問者のニックネームは「まろん」なのに、1時11分の投稿は「おたま」なの?
(bi) 2015/11/17(火) 06:15

 HN は統一してお使いになったほうがよろしいかと思いますよ。

 それはさておき。

 提案した方法は

 ・入力に - があろうがなかろうが、まず、 - を消す。
 ・その上で【必要な形に整形】して検索を行う。

 こうしています。
 ですから、対象が xxx-xxxx-xxxx であれば、その形にしてやればいいわけです。
 ただし、対象が、どんな形であっても対応できる整形方法はありません。
 xxx-xxx-xxxx のような固定電話番号スタイルかもしれませんしね。
 あくまで、対象にものに合わせるということになります。

 もう1つ考えられるのは、ちょっと強引ですが

 ・シートの UsedRange の Formula を Variant型変数に保存
 ・その領域の - を 消す
 ・InputBoxの結果から - を 消す
 ・- なしの検索語句で - なしの検索領域を検索
 ・検索後、シートの UsedRange の Value を 保存しておいた Variant型変数から復元

 こうすれば、【どんなスタイルでも】検索はできるかと思います。
 ただし、「元々 - なしの文字列」があって、それが【たまたま】- を取り除いた検索語句と一致すると
 それも検索でマッチしてしまいますが。

(β) 2015/11/17(火) 07:57


 もし、質問の意図が、必要な形に整形する方法ということであれば、1つには LEFT や MID や RIGHT で
 文字列変換する方法になりますが、もし、該当の文字が【すべて数字】なら Format関数が使えます。

 Sub Sample()
    Dim s As String

    s = "abcdefghijk"

    MsgBox Left(s, 3) & "-" & Mid(s, 4, 4) & "-" & Mid(s, 8, 4)

    s = "01234567890"

    MsgBox Format(s, "000-0000-0000")

 End Sub

(β) 2015/11/17(火) 17:45


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.