[[20061030222801]] 『コンボボックスのリストの空白』(マルテン) ページの最後に飛ぶ

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

 

『コンボボックスのリストの空白』(マルテン)

ユーザーボックスのコンボボックスにてComboBox1のリストの範囲を

A列と指定するともちろんコンボボックスのリストには空白が沢山入ってしまいます。

それを空白をリスト上に出さないというのは可能でしょうか?

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

Excel2000、WindowsXP


 必要なものだけAddItemする。 (アカギ)


(マルテン)
説明不足ですみません m(..)m

別のシートにリストがありまして、そのリストは追記する場合が多いので

列を指定しておけば、その列に追記するだけで、他を触らなくても済むかなと思い、

それでコンボボックスに表示されるリストに空白がでないようにしたいのです。


 すでにアカギさんが答えを書いていますが
 ComboBoxのリストはどの様に設定してますか?
 (Matta)

 今は時間がないのでURLだけ。 (アカギ)
http://okwave.jp/qa480729.html


(マルテン)

Private Sub ComboBox1_Change()

    Dim si As Integer
    With UserForm1

        Select Case ComboBox1.Value
            Case "会社"
                 .ComboBox2.RowSource = "リスト!a1:a6"

実際は

ComboBox1が「会社」の場合はComboBox2はリストというシートのある範囲を指定する。(上の場合はa1〜a6ですが、これをA列にして空白を除外したいのです)

勉強不足ですみません・・・。


 ループでいいのでは?

 Private Sub ConboBox1_Change()
 Dim r As Range, rng As Range
 With Sheets("リスト")
    Select Case Me.ComboBox1.Value
       Case "会社"
          Set rng = .Range("a1",.Range("a" & Rows.Count).End(xlUp))
    End Select
 End With
 If Not rng Is Nothing Then
    With Me.ComboBox2
       .Clear
       .RowSource = ""
       For Each r In rng
          If Not IsEmpty(r) Then .AddItem r.Value
       Next
    End With
 End If
 Set rng = Nothing
 End Sub
 (seiya)


(マルテン)
うまくいきません。

リストというシートは別のシートだからなのでしょうか?


 RowSorceを空欄にしてみてくらはい。(プロパティの)
 でもってこれでどうでっか?
        (弥太郎)
 Private Sub ComboBox1_Change()
    Select Case Me.ComboBox1
        Case "会社"
    End Select
    Me.ComboBox2.Clear
    With Sheets("リスト")
        For i = 1 To .Range("a" & Rows.Count).End(xlUp).Row
            If Not IsEmpty(.Cells(i, 1)) Then
                Me.ComboBox2.AddItem .Cells(i, 1)
            End If
        Next i
    End With
 End Sub


できました!!
ありがとうございます。感謝!感謝!です。
本当にありがとうございます。
(マルテン)


 師匠、フォローありがとうございます!
 (seiya)

たびたび、申し訳ありません・・・
コンボボックスにて
例えば、選択するものが「会社」、「自宅」の2つあり、「会社」の場合は
「会社リスト」というシートのA列、
「自宅」の場合は、「自宅リスト」というシートのA列を選択するということ
は出来るのでしょうか?

(マルテン)


 こんな感じですか?

 Private Sub ComboBox2_Change()
 With Me.ComboBox1
     If .ListIndex = -1 Then Exit Sub
     On Error Resume Next
     Sheets(.Value).Activate
     Sheets(.Value).Range("a1").EntireColumn.Select
 End With
 (seiya)

はじめに、コンボボックス1はSheet1のb1〜b2の範囲を指定してあり、
(B1のセルには会社、B2のセルには自宅と書いてある)

そして、コンボボックス1で「会社」を選んだとき、Sheeet2のA列にあるリストをコンボボックス2に表示(A列の空白は表示されない)

コンボボックス1で「自宅」を選んだとき、Sheet3のA列にあるリストをコンボボックス2に表示(A列の空白は表示されない)

という内容ですが、いかがでしょうか?

(マルテン)


 こんな感じかな?

 Private Sub ComboBox1_Change()
 Dim r As Range
 Me.ComboBox2.Clear
 With Me.ComboBox1
     If .ListIndex = -1 Then
         Exit Sub
     End If
     With Sheets("Sheet" & .Index + 1)
         For Each r In .Range("a1",.Range("a" & Rows.Count).End(xlUp))
            If Not IsEmpty(r) Then Me.ComboBox2.AddItem r.Value
         Next
     End With
 End With
 End Sub
 (seiya)

 seiyaはんに謝礼の菓子折を頂くんは心地ええもんでんなぁ。(笑
 ほならもう一発上げ底の菓子折を期待して・・・
 With Sheets("Sheet" & .Index + 1)を
 With Sheets("Sheet" & .ListIndex+2)に変更してくらはい。
 フォームのモジュールに
 Private Sub UserForm_Initialize()
    With ComboBox1
        .AddItem "会社"
        .AddItem "自宅"
    End With
 End Sub
 と記載すればわざわざSheetから引っ張ってこなくてもOKですヨ。
 リスト会社、リスト自宅(反対で会社リスト 自宅リスト?)
 のようなシート名にしてあるならば
 Private Sub ComboBox1_Change()
    Dim sht_name As String
    Me.ComboBox2.Clear
    Select Case Me.ComboBox1
        Case "会社"
            sht_name = "会社リスト"
        Case "自宅"
            sht_name = "自宅リスト"
    End Select
    With Sheets(sht_name)
        For i = 1 To .Range("a" & Rows.Count).End(xlUp).Row
            If Not IsEmpty(.Cells(i, 1)) Then
                Me.ComboBox2.AddItem .Cells(i, 1)
            End If
        Next i
    End With
 End Sub
 などとするのも有効かとおもいまっせぇ。
      (弥太郎)
 底上げ→上げ底 いけまへんなぁ。日本語が乱れとります。7:11        

 わぁー..
 金一封もんですね。+2でした...
 (seiya)

コメント返信:

[ 一覧(最新更新順) ]


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