Excel VBA質問箱 IV

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

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


46132 / 76732 ←次へ | 前へ→

【35579】Re:sheet内の検索・・・
発言  太公望  - 06/3/7(火) 23:54 -

引用なし
パスワード
   今晩は。

>>データの様子ややりたいことが漠然としていて、今のところ考えようがないです。
>>
>>もし、今までの質問と内容がことなるのなら、別スレッドで質問されたほうがいいと思いますが?。
>>1つのスレッドに対し、1問1答がまとまりがよく、望ましいです。

>Conbobox2によりSheet(A列〜K列、1〜600行)のセルの検索結果をListboxに表示させたいのですが、無理ですか?お願いします。

Conbobox1とConbobox2とListBox1の3つが連動して関係しているときは、しっかりと仕様が決まっていないと、結局、全体として完成したものはできません。

漠然としていて、Conbobox1とConbobox2の関係がわからないので、下記の参考コードしかできません。

これで分らなかったら、しっかりと仕様を決めて、別スレッドで質問しなおしてください。

参考までに

Private dic As Object

Private Sub UserForm_Initialize()
Dim cmbList
  cmbList = Array("X", "Y", "Z")   'ComboBox1に表示する値をセット
                    'この配列は自分で決めてください
  'ComboBox1とComboBox2の関係を決めるコードをここに書く(配列を作る)
  'このコードは自分で決めてください
  '
  ComboBox1.List = cmbList
  ComboBox1.ListIndex = 0
End Sub

Private Sub ComboBox1_Change()
Dim rng As Range, r As Range, rn As Range
Dim vnt As Variant, v, cmbList
Dim dicChk As Object
Dim cmbList2
  cmbList2 = Array("a", "b", "c")   'ComboBox2に表示する値をセット
                    'この配列はComboBox1によって変化するように
                    '自分で決めてください
  With Sheets("Sheet1")
    Set rng = .Range("A1", .Range("A65536").End(xlUp))
  End With
  '
  Set dic = CreateObject("Scripting.Dictionary")
  Set dicChk = CreateObject("Scripting.Dictionary")
  '
  For Each v In cmbList2
  For Each rn In rng.Cells
  For Each r In rn.Resize(1, 11)
    If r.Text Like ("*" & v & "*") Then
      If dic.exists(v) Then
        If dicChk.exists(r.Row & v) Then Exit For
        vnt = dic(v)
        ReDim Preserve vnt(UBound(vnt) + 1)
        vnt(UBound(vnt)) = Cells(r.Row, 1).Resize(1, 11).Value
      Else
        ReDim vnt(0 To 0)
        vnt(0) = Cells(r.Row, 1).Resize(1, 11).Value
      End If
      dic(v) = vnt
      dicChk(r.Row & v) = ""
    End If
  Next
  Next
  Next
  '
  ListBox1.ColumnCount = 11  'ListBox1を11列表示にする
  '
  Set dicChk = Nothing
  Set rng = Nothing
  
  ComboBox2.List = cmbList2
  ComboBox2.ListIndex = 0
End Sub

Private Sub ComboBox2_Change()
  ListBox1.List = Application.Transpose(Application. _
          Transpose(dic(ComboBox2.Value)))
End Sub

Private Sub UserForm_Terminate()
  Set dic = Nothing
End Sub

13 hits

【35469】sheet内の検索・・・ ton 06/3/5(日) 23:55 質問
【35499】Re:sheet内の検索・・・ 太公望 06/3/6(月) 21:48 回答
【35504】Re:sheet内の検索・・・ ton 06/3/7(火) 1:32 質問
【35511】Re:sheet内の検索・・・ Hirofumi 06/3/7(火) 9:53 回答
【35570】Re:sheet内の検索・・・ ton 06/3/7(火) 21:20 お礼
【35634】Re:sheet内の検索・・・ Hirofumi 06/3/8(水) 20:21 回答
【35562】Re:sheet内の検索・・・ 太公望 06/3/7(火) 20:10 回答
【35571】Re:sheet内の検索・・・ ton 06/3/7(火) 21:25 発言
【35577】Re:sheet内の検索・・・ 太公望 06/3/7(火) 21:58 発言
【35578】Re:sheet内の検索・・・ ton 06/3/7(火) 22:37 発言
【35579】Re:sheet内の検索・・・ 太公望 06/3/7(火) 23:54 発言
【35580】Re:sheet内の検索・・・ ton 06/3/8(水) 0:18 お礼

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