[[20040602174957]] 『リストボックス・コンボボックスの連動』(ちゅっぱ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストボックス・コンボボックスの連動』(ちゅっぱ)

[リストボックス・コンボボックスの連動?セル参照]

初めまして。お世話になります。

UserFormリストボックス1で地域を選択後、リストボックス2で都道府県を選択。
この時にリストボックス2で選択した都道府県の列に記入してあるセルをコンボボックスに
参照させたいのですが、どうすればいいのか解りません。アドバイスの程をお願いします。

Excel2000, OS2000


 以前教えていただきましたスレッドです。
[[20040105145400]]『UserFormのComboBoxの使い方』(ケン)
(ケン)


ケンさん、こんにちは。レスが遅くなって申し訳ありません。
スレッドを見て自分なりに頑張ってはいるのですがどうも上手くいきません。

 Private Sub CommandButton1_Click()                         

 Dim rngF As Range

 Set rngF = Worksheets(ListBox1.Value).Rows("1") _
          .Find(What:=ListBox2.Value _
          , LookIn:=xlFormulas _
          , LookAt:=xlWhole _
          , MatchCase:=False)

 If rngF Is Nothing Then
 MsgBox "その県はありません。"
 Exit Sub
 End If

 If IsEmpty(rngF.offset(1, 0).Value) Then
 rngF.offset(1, 0).Value = TextBox1.Value                      
 rngF.offset(1, 1).Value = CLng(Me.OptionButton1.Value) + 2   
 Else
 rngF.End(xlDown).offset(1, 0).Value = TextBox1.Value
 rngF.End(xlDown).offset(0, 1).Value = CLng(Me.OptionButton1.Value) + 2
 End If

ここまでは出来たのですが、この時点でListBox2で選択した列(2行目〜最終セル)
までのセルをコンボボックスに参照させたいのです。
アドバイスの程を宜しくお願い致します。


 こういう事でッか?

 Private Sub ListBox2_Click()
    Dim i As Integer

    ComboBox1.Clear
    maxrow = Range("b65536").End(xlUp).Row '←ここは実情にあわせて
    With ComboBox1
        For i = 2 To maxrow
            .AddItem Cells(i, 2)
        Next
    End With
 End Sub
     (弥太郎)


 チョット分かりにくいかも知れまへんのんで...

 Private Sub ListBox2_Click()
    Dim i As Integer, col_no As Integer, maxrow As Integer

    ComboBox1.Clear
    col_no = ListBox2.ListIndex
    maxrow = Cells(65536, col_no + 1).End(xlUp).Row
    With ComboBox1
        For i = 2 To maxrow
            .AddItem Cells(i, col_no + 1)
        Next
    End With
 End Sub
   (弥太郎)


弥太郎さん、こんにちは。
アドバイスの程ありがとうございます。理想に近づきました。
が・・・ListBox2で選択する列は、A,C,E,G,I・・・と1行おきに
なっており、それ以外の列には数字が入っています。
イメージしているものは(最初の質問とちょっと変更してしまいますが)
ListBox2で選択した列(2行目〜最終セル)&隣りの列(数字)のセルを
コンボボックスに参照させたいと思っています。
流れ的には、参照後、CommandButton5(削除ボタン)で削除出来る
ようになれば。と思っています。
宜しくお願い致します。


 としたらこんな案配でッか?

 Private Sub ListBox2_Click()
    Dim i As Integer, col_no As Integer, maxrow As Integer

    ComboBox1.Clear
    col_no = ListBox2.ListIndex * 2 + 1
    maxrow = Cells(65536, col_no).End(xlUp).Row
    With ComboBox1
        For i = 2 To maxrow
            .AddItem Cells(i, col_no) & " " & Cells(i, col_no + 1)
        Next             ’↑不要なら削除
    End With
 End Sub

 CommandButtonで削除するならそこへComboBox1.Clearを書き込めばよろしいんと
 ちゃいまっか。
 勿論リストボックス2のComboBox1.Clearは不要になります。
      (弥太郎)

弥太郎さん、素早い回答ありがとうございます。
お陰様で理想通りの物ができました。
もう1つだけ教えて下さい。

CommandButtonで削除するならそこへComboBox1.Clearを書き込めばよろしいんと ちゃいまっか。

これだとComboBoxで表示しているものが消えますよね?
ではなくイメージしているのは、ComboBox1で選択したセルを削除したいと
(ListBox2で選択した列(2行目〜最終セル)&隣りの列(数字)のセル)
思っています。もう少しだけお付き合い頂けると幸いです。
宜しくお願い致します。


 >もう少しだけお付き合い
 へいへい。
 '---------------------------------
 Dim data As Integer, col_no As Integer, maxrow As Integer
   '↑General Declarations にコピペ
 '----------------------------------
 Private Sub ComboBox1_Change()

    data = ComboBox1.ListIndex
    'コンボに追加
 End Sub
 '---------------------------------
 Private Sub CommandButton5_Click()
    Dim i As Integer
       '↓削除するボタンに追加 
    For i = 2 To maxrow
        If data + 2 = i Then
            Cells(i, col_no).Resize(, 2).Clear
        End If
    Next i
 End Sub
 '----------------------------------
 Private Sub ListBox2_Click()
    Dim i As Integer     ’←変更

    ComboBox1.Clear
    col_no = ListBox2.ListIndex * 2 + 1
    maxrow = Cells(65536, col_no).End(xlUp).Row
    With ComboBox1
        For i = 2 To maxrow
            .AddItem Cells(i, col_no) & " " & Cells(i, col_no + 1)
        Next
    End With
 End Sub

     (弥太郎)


弥太郎さん、お疲れ様です。
本当に感謝です。イメージしていたものが出来ました。
また困ったときはお力を貸して下さい。
ありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.