[[20160916192006]] 『複数列の最終行までの値をコンボボックスに入れる』(フィロ) ページの最後に飛ぶ

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

 

『複数列の最終行までの値をコンボボックスに入れるには』(フィロ)

要約の通りです。
各列、最終行までの値をフォーム上のコンボボックスに入れるにはでどうするべきか。

列は全て4列あります。
行は見出し行(項目)があり、各項目(列)ごとに最終行が異なります。
それぞれの最終行を取得し、コンボボックスに入れたいと考えてます。

.Cells(.Row.Count, 1).End(xlUp).Row

例えば上記コードはA列のみですが。
ここで複数列を指定は出来ないのでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 こんなことがしたかったのでしょうか?

 Private Sub UserForm_Initialize()
    With Sheets("Sheet1").Range("A1").CurrentRegion
        ComboBox1.List = .Resize(.Rows.Count - 1).Offset(1).Value
        ComboBox1.ColumnCount = 4
    End With
 End Sub

(β) 2016/09/16(金) 20:14


βさん、有難うございます。
まだトライ・アンド・エラーの段階なので新鮮なコードに戸惑っております。

        ComboBox1.ColumnCount = 4

これが気になる所です。

ちなみに、下記コードで一応、実現出来たのですが...
for文が多い気が凄くします...

Private Sub UserForm_Initialize()

Dim i As Integer

  cbSex.Clear
  cbNendai.Clear
  cbTii.Clear
  cbSex.Clear

    For i = 2 To Worksheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
        cbSex.AddItem Worksheets("DATA").Cells(i, 1).Value
    Next

    For i = 2 To Worksheets("DATA").Cells(Rows.Count, 2).End(xlUp).Row
        cbNendai.AddItem Worksheets("DATA").Cells(i, 2).Value
    Next

    For i = 2 To Worksheets("DATA").Cells(Rows.Count, 3).End(xlUp).Row
        cbTii.AddItem Worksheets("DATA").Cells(i, 3).Value
    Next

    For i = 2 To Worksheets("DATA").Cells(Rows.Count, 4).End(xlUp).Row
        cbCode.AddItem Worksheets("DATA").Cells(i, 4).Value
    Next

End Sub

(フィロ) 2016/09/16(金) 20:30


 あぁ、4列というのは、4つのコンボボックスに、それぞれ1列ずつということでしたか。
 では、以下のように。

 Private Sub UserForm_Initialize()

    With Worksheets("DATA")

        cbSex.List = Range("A2", Range("A" & Rows.Count).End(xlUp)).Value
        cbNendai.List = Range("B2", Range("B" & Rows.Count).End(xlUp)).Value
        cbTii.List = Range("C2", Range("C" & Rows.Count).End(xlUp)).Value
        cbCode.List = Range("D2", Range("D" & Rows.Count).End(xlUp)).Value

    End With

 End Sub

(β) 2016/09/16(金) 21:01


このような書き方があるんですね。

けれども、出来ませんでした...。構文としては凄く好きです。
(フィロ) 2016/09/16(金) 21:45


 >>けれども、出来ませんでした...。

 ん? できますよ。
 それとも、要件を誤解しているのかな。

 できないというのは、どう できなかったんですか?

 あっあっ!!! ごめん。

 すべての Range を .Range にしてください。(1コードに2か所ずつ)

(β) 2016/09/16(金) 22:11


お礼が遅れた事、誠に申し訳ありませんでした。
マナー違反ですね...。以後、気を付けます。
無事にこのコードでの動作確認がとれております。
(フィロ) 2016/09/19(月) 22:11

コメント返信:

[ 一覧(最新更新順) ]


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