Excel VBA質問箱 IV

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

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


9750 / 13644 ツリー ←次へ | 前へ→

【25638】検索時の行番号取得について こなつ 05/6/9(木) 9:35 質問[未読]
【25643】Re:検索時の行番号取得について Jaka 05/6/9(木) 10:57 発言[未読]
【25664】Re:検索時の行番号取得について こなつ 05/6/9(木) 23:45 お礼[未読]

【25638】検索時の行番号取得について
質問  こなつ  - 05/6/9(木) 9:35 -

引用なし
パスワード
   超初心者の質問で申し訳ありませんが
どなたか助けて下さい。

質問は コンボックスにデータを追加するマクロで
ちょっとつまずいてしまったので今回ここにアップ
させていただきました。
条件としては、コンボックス1と2があり、その
コンボックス1のなかにはあるリストを追加します。
このコンボックス1で選択した時、その中のデータに
応じてコンボックス2のリストを変化させるマクロです。

 データ
 │ 1 │ 2 │ 3 
─┼───┼───┼─────────
 │コン1│   │コン2
1│ A店│ A │りんご
2│ B店│ A │みかん
3│ C店│ A │すいか
4│ D店│ A │かき
5│ E店│ B │いちご
6│ F店│ B │めろん
7│ G店│ B │ぱいん
8│   │ B │もも
9│   │   │
10│   │   │ 

  コンボックス1 →→ コンボックス2
   B店         いちご
              めろん  
              ぱいん
              もも 

上のようなデータで例えばコンボックス1で
B店を選択すると コンボックス2ではB店でのみ
扱っているリストを表示(コンボックスのアイテム)に
させたいのですが、コンボックスにデータを入力させる
為に、Find メソッドで始めの行数を取得し、 FindNextを
使って最後の行数を取得して、その間のデータを取り込もうと
考えているのですが、FindNextを使うとうまく行かないので
どなたかアドバイスの方、宜しくお願いします。
長々と書いてしまい申し訳ありません。

 With Worksheets("Sheets1").Range("D2:D400")
    KENSAKU = お店ComboBox.Value
    Set 検索 = .Find(KENSAKU)
    If Not 検索 Is Nothing Then
      firstAddress = 検索.Address
      KAZU = Range(firstAddress).Row
      お店コード = Worksheets("Sheets1").Cells(KAZU, 3).Value
    End If
  End With

  With Worksheets("Sheets1").Range("G2:G9000")
    KENSAKU = お店コード
    Set 検索 = .Find(KENSAKU)
      If Not 検索 Is Nothing Then
        firstAddress = 検索.Address
        KAZU = Range(firstAddress).Row
      End If
  End With
      
  With Worksheets("Sheets1").Range("G2:G9000")
    EKAZU = 0
    Set 検索 = .Find(KENSAKU)
    If Not 検索 Is Nothing Then
      firstAddress = 検索.Address
      Do
        Set 検索 = .FindNext(KENSAKU)←ここでエラーになります。
        LastAddress = 検索.Address
          If KAZU = EKAZU Then
            Exit Do
          Else
            EKAZU = Range(LastAddress).Row
          End If
      Loop
    End If
  End With
  For i = KAZU To EKAZU
    If Worksheets("Sheets1").Cells(i, 9).Value = "" Then

    Else
      売物ComboBox.AddItem Worksheets("Sheets1").Cells(i, 9).Value
    End If
  Next

【25643】Re:検索時の行番号取得について
発言  Jaka  - 05/6/9(木) 10:57 -

引用なし
パスワード
   こんにちは。
ろくに質問の内容を見てないけど、Findの書き方にちょっと...。

>    Set 検索 = .Find(KENSAKU)
     ↑ ここで1回目の検索をしているのに
>    If Not 検索 Is Nothing Then
>      firstAddress = 検索.Address
>      Do
>        Set 検索 = .FindNext(KENSAKU)←ここでエラーになります。
         ↑ 何でここで次を探すのでしょうか?
           2度目に処理するから、処理内容によっては同じ結果にはなりますが....。

>        LastAddress = 検索.Address
>          If KAZU = EKAZU Then
>            Exit Do
>          Else
>            EKAZU = Range(LastAddress).Row
>          End If
>      Loop
>    End If

で、たぶん。
.FindNext(KENSAKU)
 ↓
.FindNext(after:=検索)


絞込みだったら、こういうのと違うのでしょうか?
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=84;id=FAQ

【25664】Re:検索時の行番号取得について
お礼  こなつ  - 05/6/9(木) 23:45 -

引用なし
パスワード
   早速の回答どうもありがとうございました。
おかげさまで、頭の中のもやもやが消えました。
また、今後ともご指導のほどお願いします。

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