[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンボボックスのリストの空白』(マルテン)
ユーザーボックスのコンボボックスにてComboBox1のリストの範囲を
A列と指定するともちろんコンボボックスのリストには空白が沢山入ってしまいます。
それを空白をリスト上に出さないというのは可能でしょうか?
よろしくお願いいたします。
Excel2000、WindowsXP
必要なものだけAddItemする。 (アカギ)
別のシートにリストがありまして、そのリストは追記する場合が多いので
列を指定しておけば、その列に追記するだけで、他を触らなくても済むかなと思い、
それでコンボボックスに表示されるリストに空白がでないようにしたいのです。
すでにアカギさんが答えを書いていますが 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)
(マルテン)
こんな感じですか?
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で「会社」を選んだとき、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.