Excel VBA質問箱 IV

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

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


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

【68882】コンボボックスへの検索結果表示 レッズ命 11/4/24(日) 10:53 質問[未読]
【68883】Re:コンボボックスへの検索結果表示 かみちゃん 11/4/24(日) 11:20 発言[未読]
【68884】Re:コンボボックスへの検索結果表示 レッズ命 11/4/24(日) 11:28 発言[未読]
【68886】Re:コンボボックスへの検索結果表示 レッズ命 11/4/24(日) 11:47 発言[未読]
【68887】Re:コンボボックスへの検索結果表示 かみちゃん 11/4/24(日) 13:14 発言[未読]
【68890】Re:コンボボックスへの検索結果表示 レッズ命 11/4/24(日) 14:32 お礼[未読]

【68882】コンボボックスへの検索結果表示
質問  レッズ命  - 11/4/24(日) 10:53 -

引用なし
パスワード
   たびたびの質問ですみません。

ユーザーフォームのコンボボックスに、
検索文字を入力することにより、
"会社一覧"のシートから検索して、検索結果のみ表示させたいのですが、
うまくいきません。
どこが悪いのか、教えてください。
ちなみのマクロを実行するボタンは
"カウンター数一覧"のシートにあります。
2007 vistaを使用しています。

Public c1 As Object
Public i As Integer
Public c2 As Object
Public firstAddress As String
Public x As Integer

Private Sub UserForm_Initialize()

Sheets("会社一覧").Select

Set c1 = Sheets("会社一覧").Columns("B") _
    .Find(what:=Sheets("カウンター数一覧").Range("J1").Value, _
       lookat:=xlWhole)

If c1.Offset(1, 0) = "" Then
 ComboBox1.Value = Sheets("会社一覧").Range("B3").Value
 For i = 3 To Range("B3").End(xlDown).row
 ComboBox1.AddItem Sheets("会社一覧").Range("B" & i)
 Next i
Else
 ComboBox1.Value = c1.Offset(1, 0).Value
 For i = c1.row + 1 To Range("B3").End(xlDown).row
 ComboBox1.AddItem Sheets("会社一覧").Range("B" & i)
 Next i
End If

End Sub

Private Sub TextBox1_AfterUpdate()

ComboBox1.Clear
ComboBox1.Value = ""

With Sheets("会社一覧").Columns("B")
 Set c2 = .Find(what:=TextBox1.Value)
 If Not c2 Is Nothing Then
  firstAddress = c2.Address
  Do
  ComboBox1.AddItem Sheets("会社一覧").Range(c2.Address)
  Set c2 = .FindNext(c2)
   If c2 Is Nothing Then Exit Do
  Loop Until c2.Address = firstAddress
 Else
 End If
End With

ComboBox1.DropDown

End Sub

【68883】Re:コンボボックスへの検索結果表示
発言  かみちゃん E-MAIL  - 11/4/24(日) 11:20 -

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

>"会社一覧"のシートから検索して、検索結果のみ表示させたいのですが、
>うまくいきません。
>どこが悪いのか、教えてください。

何がどううまくいかないのでしょうか?

以下のようなシートイメージで、うまくいかないサンプルデータを教えていただくことはできませんか?

  A  B  C
1
2
3
4
5

【68884】Re:コンボボックスへの検索結果表示
発言  レッズ命  - 11/4/24(日) 11:28 -

引用なし
パスワード
   ▼かみちゃん さん:
いつもご回答ありがとうございます。

  A  B  C
1   あいう
2   いかさ
3   うんく
4   あいく
5   かんか

とあったときに、

ユーザーフォームのコンボボックスに初期時は、
コンボボックスのリストにB1〜B5を表示させておいて、
検索文字(textbox1)に『か』と入力したら、
コンボボックスのリストに『いかさ』、『かんか』のみが表示されるように
したいのです。

こんな説明で大丈夫でしょうか?

【68886】Re:コンボボックスへの検索結果表示
発言  レッズ命  - 11/4/24(日) 11:47 -

引用なし
パスワード
   追記

ちなみに文字を入れてみると、
どんな文字を入れても
エラーメッセージは出ないのですが、
コンボボックスのリストに何も出ない状態になります。

【68887】Re:コンボボックスへの検索結果表示
発言  かみちゃん  - 11/4/24(日) 13:14 -

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

> ユーザーフォームのコンボボックスに初期時は、
> コンボボックスのリストにB1〜B5を表示させておいて、
> 検索文字(textbox1)に『か』と入力したら、
> コンボボックスのリストに『いかさ』、『かんか』のみが表示されるように
> したいのです。
>
>
> ちなみに文字を入れてみると、
> どんな文字を入れても
> エラーメッセージは出ないのですが、
> コンボボックスのリストに何も出ない状態になります。

 Set c2 = .Find(what:=TextBox1.Value)

の部分を

 Set c2 = .Find(what:=TextBox1.Value, lookat:=xlPart)

とすれば、いかがでしょうか?

なお、

Private Sub UserForm_Initialize()

End Sub

のコードは、「カウンター数一覧」シートのJ1セルに何か値が入っている場合で、
その値に完全一致する値が「会社一覧」シートのB列に存在しない場合、エラー
になりませんか?

Set c1 = Sheets("会社一覧").Columns("B") _
     .Find(what:=Sheets("カウンター数一覧").Range("J1").Value, _
        lookat:=xlWhole)

の結果が Nothing の場合です。

【68890】Re:コンボボックスへの検索結果表示
お礼  レッズ命  - 11/4/24(日) 14:32 -

引用なし
パスワード
   ▼かみちゃん さん:
>
> Set c2 = .Find(what:=TextBox1.Value, lookat:=xlPart)
>
 でできるようになりました。
 使ったことあったのに、なぜこれを省略したのか、
 自分でも判りません・・・(汗)
>Private Sub UserForm_Initialize()
>
>End Sub
>
>のコードは、「カウンター数一覧」シートのJ1セルに何か値が入っている場合で、
>その値に完全一致する値が「会社一覧」シートのB列に存在しない場合、エラー
>になりませんか?

 必ず存在するように作っているので、
 大丈夫なのです!

ご回答いただき、本当にありがとうございました。

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