Excel VBA質問箱 IV

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

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


5502 / 13646 ツリー ←次へ | 前へ→

【50426】コンボボックスの空欄非表示について dvo 07/7/24(火) 20:58 質問[未読]
【50436】Re:コンボボックスの空欄非表示について ... ichinose 07/7/25(水) 6:15 発言[未読]
【50442】Re:コンボボックスの空欄非表示について ... dvo 07/7/25(水) 18:40 お礼[未読]

【50426】コンボボックスの空欄非表示について
質問  dvo  - 07/7/24(火) 20:58 -

引用なし
パスワード
   すみません、何処を調べても見つからないので教えてください。

ユーザーフォームのコンボボックスについてです。

<例>
 A B 
1あ か
2  
3い き
4う 
5  
6え く
7お

<例>の、A列をコンボボックスに引っ張ってきており、コンボボックスで選択した時にlabelにてA列に対応したB列を表示するようにしています(あ→か、い→き、う→空欄、え→く、お→空欄)。
そのままならちゃんと表示されるのですが、これだとコンボボックス内でA列の空欄まで表示されてしまうので、これを非表示にしたいと思っています。

initializeで、if構文を使って空欄を表示しないようにはできたのですが、これだと<例2>のようになってしまいB列とずれてしまいます。

<例2>
 A B 
1あ か
3い  
4う き
6え 
7お
8   く

これを、A列B列対応させた上で、コンボボックス内にA列の空欄を表示させないようにするにはどうしたらいいでしょうか。
探してもないってことはすごくくだらない質問なのかな…と思うのですが、初心者なものですみません、お手数ですがご教授願います。

【50436】Re:コンボボックスの空欄非表示について...
発言  ichinose  - 07/7/25(水) 6:15 -

引用なし
パスワード
   おはようございます。細かいところで間違いあったので再送です。


******************************************************

いくつも方法はあると思いますよ!!

まず、抱えているブックは置いといて、新規ブックで確認してください。

新規ブック(Sheet1というシート名がある)にてユーザーフォーム(Userform1)
を作成してください。

このUserform1には、
  コンボボックス  Combobox1 
  ラベル      Label1

の二つのコントロールを配置してください。


又、Sheet1というシートには、dvo さんが提示されたデータが入力されているとします。
       A     B
 1     あ     か
 2
 3     い     き
 4     う
 5 
 6     え     く
 7     お


というデータが入力されているとします。


標準モジュールに

'=================================================
Option Explicit
Sub main()
  UserForm1.Show
End Sub


Userform1のモジュールに

'=================================================
Option Explicit
Private evflg As Boolean 'Combobox1のChangeイベントの実行の有無
Private Sub ComboBox1_Change()
  Dim sht As Worksheet
  Set sht = Worksheets("sheet1")
  If evflg = False Then Exit Sub
  With ComboBox1
    Label1.Caption = sht.Range("b" & .List(.ListIndex, 1)).Value
  End With
End Sub
'=================================================
Private Sub UserForm_Initialize()
  Dim sht As Worksheet
  Dim idx As Long
  Dim jdx As Long
  Set sht = Worksheets("sheet1")
  jdx = 0
  evflg = False
  With ComboBox1
    .ColumnCount = 1
    .BoundColumn = 1
    .TextColumn = 1
    .Style = fmStyleDropDownList
    For idx = 1 To sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
     If sht.Range("a" & idx).Value <> "" Then
       .AddItem sht.Range("a" & idx).Value
       .List(jdx, 1) = idx
       jdx = jdx + 1
       End If
     Next
    .ListIndex = -1
    End With
  Label1.Caption = ""
  evflg = True
End Sub


これでmainを実行してみてください。

コンボボックスの選択に対応したデータがラベルに表示されるはずです。

【50442】Re:コンボボックスの空欄非表示について...
お礼  dvo  - 07/7/25(水) 18:40 -

引用なし
パスワード
   希望通りに動きました!ありがとうございます。感謝感激です(*^_^*)

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