Excel VBA質問箱 IV

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

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


7761 / 13645 ツリー ←次へ | 前へ→

【36857】曖昧検索について SinjiM 06/4/16(日) 21:15 質問[未読]
【36858】Re:曖昧検索について かみちゃん 06/4/16(日) 21:34 回答[未読]
【36903】Re:曖昧検索について SinjiM 06/4/17(月) 21:12 質問[未読]
【36909】Re:曖昧検索について Kein 06/4/17(月) 21:56 回答[未読]
【36947】Re:曖昧検索について SinjiM 06/4/18(火) 20:50 質問[未読]
【36948】Re:曖昧検索について Kein 06/4/18(火) 21:45 回答[未読]
【36949】Re:曖昧検索について Kein 06/4/18(火) 21:48 回答[未読]
【36975】Re:曖昧検索について SinjiM 06/4/19(水) 11:50 質問[未読]
【36977】Re:曖昧検索について Kein 06/4/19(水) 11:58 回答[未読]
【37052】Re:曖昧検索について SinjiM 06/4/20(木) 11:24 質問[未読]
【37055】Re:曖昧検索について SinjiM 06/4/20(木) 12:01 お礼[未読]

【36857】曖昧検索について
質問  SinjiM E-MAIL  - 06/4/16(日) 21:15 -

引用なし
パスワード
   こんばんは
 ExcelFileのレイアウトは以下のよう、ここで「Code」という項目に対して
曖昧検索をかけたいのでうが、方法は分かりません。
この掲示板に投稿しました。
伝授ください、よろしくお願いします。

Codeは5桁の半角英数文字で構成され、検索時InputBOXの五箇所に
Codeを入力し、入力していない箇所は曖昧検索と認識、検索をかけ、その結果に
色を付けたいです。

  A       B       C・・・・・・・・・・・・・・・
1  Code      TradeName   Country
2 


1024

【36858】Re:曖昧検索について
回答  かみちゃん  - 06/4/16(日) 21:34 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Codeは5桁の半角英数文字で構成され、検索時InputBOXの五箇所に
>Codeを入力し、入力していない箇所は曖昧検索と認識、検索をかけ、その結果に
>色を付けたいです。

Codeが数値の場合であれば、以下の方法でできると思います。

Sub test()
 Dim strData(6) As String
 Dim i As Integer
 Dim c As Range
 
 strData(0) = "" '検索文字列生成用
 strData(1) = "1" '1つめのInputBoxの値
 strData(2) = "" '2つめのInputBoxの値
 strData(3) = "2" '3つめのInputBoxの値
 strData(4) = "" '4つめのInputBoxの値
 strData(5) = "4" '5つめのInputBoxの値

 '検索文字列の生成
 For i = 1 To 5
  If strData(i) = "" Then
   strData(0) = strData(0) & "?"
  Else
   strData(0) = strData(0) & strData(i)
  End If
 Next
 
 '該当セルを検索
 For Each c In Range("A1:A10")
  If Format(c.Value, "@") Like strData(0) Then
   c.Interior.ColorIndex = 3
  Else
   c.Interior.ColorIndex = xlNone
  End If
 Next
End Sub

Codeが文字列の場合は、上記で検索文字列を生成して、オートフィルタの条件とする方法でもできます。

【36903】Re:曖昧検索について
質問  SinjiM E-MAIL  - 06/4/17(月) 21:12 -

引用なし
パスワード
   かみちゃんさん

 回答をいただき、ありがとうございます。
早速試してみました。コードの曖昧検索は問題なくできています。
 検査条件入力の画面について、いろいろとやってみましたが、やはり五つの
InputBoxを使わないと、検索条件の入力ができないみたいです。
 例えば、区切り記号「/」をつかう場合は、「1//2//4」、曖昧検索は可能でしょうか?

【36909】Re:曖昧検索について
回答  Kein  - 06/4/17(月) 21:56 -

引用なし
パスワード
   "/" はダメですが、"*" や "?" などのワイルドカードなら、曖昧検索に使えます。
こんなコードで

Sub MyFind()
  Dim Fr As Range
  Dim Fv As Variant
  Dim Ad As String
 
  Do
   Fv = Application _
   .InputBox("5桁の検索値を入力して下さい。ワイルドカード可", Type:=3)
   If VarType(Fv) = 11 Then Exit Sub
  Loop Until Len(Fv) = 5
  Set Fr = Range("A:A").Find(Fv, , xlValues, xlPart)
  If Fr Is Nothing Then
   MsgBox Fv & " は見つかりません", 48: Exit Sub
  End If
  Ad = Fr.Address: Range("A:A").Interior.ColorIndex = xlNone
  Do
   Set Fr = Range("A:A").FindNext(Fr)
   Fr.Interior.ColorIndex = 6
  Loop Until Fr.Address = Ad
  Set Fr = Nothing
End Sub

InputBox に例えば "123??" などと入れれば、頭3桁が123の値を抽出できます。

【36947】Re:曖昧検索について
質問  SinjiM E-MAIL  - 06/4/18(火) 20:50 -

引用なし
パスワード
   Keinさん
 お返事ありがとうございます。  
 複数実行した場合は、「色塗りつぶし」をResetする必要がありますが、その
方法を教えていただけませんか?
  

【36948】Re:曖昧検索について
回答  Kein  - 06/4/18(火) 21:45 -

引用なし
パスワード
   >複数実行した場合は、「色塗りつぶし」をReset
検索値が見つからなかった場合も色を消す、ということでしょーか ?
それなら Range("A:A").Interior.ColorIndex = xlNone というコードの位置を
変更するだけです。

Sub MyFind()
  Dim Fr As Range
  Dim Fv As Variant
  Dim Ad As String
 
  Do
   Fv = Application _
   .InputBox("5桁の検索値を入力して下さい。ワイルドカード可", Type:=3)
   If VarType(Fv) = 11 Then Exit Sub
  Loop Until Len(Fv) = 5
  Range("A:A").Interior.ColorIndex = xlNone
  Set Fr = Range("A:A").Find(Fv, , xlValues, xlPart)
  If Fr Is Nothing Then
   MsgBox Fv & " は見つかりません", 48: Exit Sub
  End If
  Ad = Fr.Address
  Do
   Set Fr = Range("A:A").FindNext(Fr)
   Fr.Interior.ColorIndex = 6
  Loop Until Fr.Address = Ad
  Set Fr = Nothing
End Sub

【36949】Re:曖昧検索について
回答  Kein  - 06/4/18(火) 21:48 -

引用なし
パスワード
   もちろん、InputBoxを出す前でもいいです。

Sub MyFind()
  Dim Fr As Range
  Dim Fv As Variant
  Dim Ad As String

  Range("A:A").Interior.ColorIndex = xlNone
  Do
   Fv = Application _
   .InputBox("5桁の検索値を入力して下さい。ワイルドカード可", Type:=3)

【36975】Re:曖昧検索について
質問  SinjiM  - 06/4/19(水) 11:50 -

引用なし
パスワード
   ▼Kein さん:
こんにちは、ありがとうございます。
いただいたコードを使って、7桁のコードも対応可能でしょうか?
教えていただきたいです。

【36977】Re:曖昧検索について
回答  Kein  - 06/4/19(水) 11:58 -

引用なし
パスワード
   何桁であろうと簡単に変更できます。桁数が違っていたら、メッセージを出してから
再度、入力を促すようにするなら・・

Do
  Fv = Application _
  .InputBox("7桁の検索値を入力して下さい。ワイルドカード可", Type:=3)
  If VarType(Fv) = 11 Then Exit Sub
  If Len(Fv) <> 7 Then MsgBox "検索値は必ず7桁にして下さい", 48
Loop Until Len(Fv) = 7

と、します。

【37052】Re:曖昧検索について
質問  SinjiM E-MAIL  - 06/4/20(木) 11:24 -

引用なし
パスワード
   Keinさん
こんにちは、いただいたコードを使ってみました結果は問題解決です。
本当にありがとうございました。

【37055】Re:曖昧検索について
お礼  SinjiM E-MAIL  - 06/4/20(木) 12:01 -

引用なし
パスワード
   失礼、チェック忘れた

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