Excel VBA質問箱 IV

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

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


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

【16840】2つの文字列を検索 Muro 04/8/11(水) 17:15 質問[未読]
【16845】Re:2つの文字列を検索 ichinose 04/8/11(水) 18:24 回答[未読]
【16857】Re:2つの文字列を検索 Muro 04/8/12(木) 9:33 お礼[未読]

【16840】2つの文字列を検索
質問  Muro  - 04/8/11(水) 17:15 -

引用なし
パスワード
   セルに書かれた文字列の中で、2つの文字列を検索しコンボボックスに表示したいのですが、どのようにすればよいのでしょうか?
イメージとしては以下の通りです。
  A  B  C  D 
1 ABC GHI CIS OLW
2 UHI TRZ KUM PQU
3 BIS YNA GOW QRT
4 MUA JHI TQP KIS

と書かれていたら検索文字を"HI"と"IS"として
"HI"と"IS"が含まれる文字列をコンボボックス上に表示させたいです。
もし"HI"を含む文字列がない場合は"IS"を含む文字列だけを表示するということは
できますか?

自分では以下のコードを書いたのですが、1つの文字列しか受け付けてくれません。

Private Sub UserForm_Initialize()
  Dim c As Range
  Dim FirstAddress As String
  Dim Target As String

  Target = "HI"
  
  With Worksheets(Worksheets.Count).UsedRange.Columns()
    Set c = .Find(what:=Target, LookIn:=xlValues, LookAt:=xlPart) '---cに検索結果を格納
    If Not c Is Nothing Then  '---条件に当てはまるセルがあれば
      FirstAddress = c.Address  '---最初のセルのアドレスを覚える
      Do           '---do...Loopステートメント
        ComboBox1.AddItem c '---情報のコピー
        Set c = .FindNext(c)  '---今見つけたセルから次のセルを検索
      Loop While Not c Is Nothing And _
         c.Address <> FirstAddress '----条件に当てはまる全てを検索
     End If
 
  End With
  
End Sub

よろしくお願いいたします。

【16845】Re:2つの文字列を検索
回答  ichinose  - 04/8/11(水) 18:24 -

引用なし
パスワード
   ▼Muro さん:
こんばんは。

>セルに書かれた文字列の中で、2つの文字列を検索しコンボボックスに表示したいのですが、どのようにすればよいのでしょうか?
>イメージとしては以下の通りです。
>  A  B  C  D 
>1 ABC GHI CIS OLW
>2 UHI TRZ KUM PQU
>3 BIS YNA GOW QRT
>4 MUA JHI TQP KIS
>
>と書かれていたら検索文字を"HI"と"IS"として
>"HI"と"IS"が含まれる文字列をコンボボックス上に表示させたいです。
>もし"HI"を含む文字列がない場合は"IS"を含む文字列だけを表示するということは
>できますか?
私は、あまりFindメソッドは使わないんですが・・・。
拝見したコードは、"HI"を含むセルの内容はコンボボックスにセットされいますよね?
"IS"でも検索するコードを追加してみては?

'===============================================================
Private Sub UserForm_Initialize()
  Dim target()
  target() = Array("HI", "IS")
  Call set_combobox(Worksheets(Worksheets.Count).UsedRange.Columns, target())
End Sub
'===============================================================
Sub set_combobox(f_rng As Range, f_str())
  Dim c As Range
  Dim FirstAddress As String
  Dim ctarget
  For Each ctarget In f_str()
   With f_rng
    Set c = .Find(what:=ctarget, LookIn:=xlValues, LookAt:=xlPart) '---cに検索結果を格納
    If Not c Is Nothing Then  '---条件に当てはまるセルがあれば
      FirstAddress = c.Address  '---最初のセルのアドレスを覚える
      Do           '---do...Loopステートメント
        ComboBox1.AddItem c '---情報のコピー
        Set c = .FindNext(c)  '---今見つけたセルから次のセルを検索
      Loop While c.Address <> FirstAddress '----条件に当てはまる全てを検索
     End If
    End With
   Next
End Sub

【16857】Re:2つの文字列を検索
お礼  Muro  - 04/8/12(木) 9:33 -

引用なし
パスワード
   ▼ichinose さん:
>▼Muro さん:
>こんばんは。
>
>>セルに書かれた文字列の中で、2つの文字列を検索しコンボボックスに表示したいのですが、どのようにすればよいのでしょうか?
>>イメージとしては以下の通りです。
>>  A  B  C  D 
>>1 ABC GHI CIS OLW
>>2 UHI TRZ KUM PQU
>>3 BIS YNA GOW QRT
>>4 MUA JHI TQP KIS
>>
>>と書かれていたら検索文字を"HI"と"IS"として
>>"HI"と"IS"が含まれる文字列をコンボボックス上に表示させたいです。
>>もし"HI"を含む文字列がない場合は"IS"を含む文字列だけを表示するということは
>>できますか?
>私は、あまりFindメソッドは使わないんですが・・・。
>拝見したコードは、"HI"を含むセルの内容はコンボボックスにセットされいますよね?
>"IS"でも検索するコードを追加してみては?
>
>'===============================================================
>Private Sub UserForm_Initialize()
>  Dim target()
>  target() = Array("HI", "IS")
>  Call set_combobox(Worksheets(Worksheets.Count).UsedRange.Columns, target())
>End Sub
>'===============================================================
>Sub set_combobox(f_rng As Range, f_str())
>  Dim c As Range
>  Dim FirstAddress As String
>  Dim ctarget
>  For Each ctarget In f_str()
>   With f_rng
>    Set c = .Find(what:=ctarget, LookIn:=xlValues, LookAt:=xlPart) '---cに検索結果を格納
>    If Not c Is Nothing Then  '---条件に当てはまるセルがあれば
>      FirstAddress = c.Address  '---最初のセルのアドレスを覚える
>      Do           '---do...Loopステートメント
>        ComboBox1.AddItem c '---情報のコピー
>        Set c = .FindNext(c)  '---今見つけたセルから次のセルを検索
>      Loop While c.Address <> FirstAddress '----条件に当てはまる全てを検索
>     End If
>    End With
>   Next
>End Sub


ありがとう御座います。
おかげさまで解決いたしました!!

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