Excel VBA質問箱 IV

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

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


4984 / 13644 ツリー ←次へ | 前へ→

【53212】コンボボックス内の値取得 わかんちゃん 07/12/21(金) 13:27 質問[未読]
【53218】Re:コンボボックス内の値取得 ichinose 07/12/21(金) 14:30 発言[未読]
【53249】Re:コンボボックス内の値取得 ponpon 07/12/22(土) 23:57 発言[未読]

【53212】コンボボックス内の値取得
質問  わかんちゃん  - 07/12/21(金) 13:27 -

引用なし
パスワード
   1列の値を以下によって
Set myDic1 = CreateObject("Scripting.Dictionary")
  For Each r In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    myDic1(r.Value) = Empty
  Next
  UserForm1.ComboBox1.List = myDic1.Keys
コンボボックスに表示させました
以下のような2列を

A列 B列
100 la
200 la
300 ha
400 ha
300 la

コンボボックス内に取得するにはどうするのですか?
教えてください

【53218】Re:コンボボックス内の値取得
発言  ichinose  - 07/12/21(金) 14:30 -

引用なし
パスワード
   こんいちは。
これに付け加えるなら・・・、

>1列の値を以下によって
  Dim cv(1 To 2) As Variant
  Dim r As Range
  Dim myDic1 As Object
  Set myDic1 = CreateObject("Scripting.Dictionary")
  For Each r In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    cv(1) = r.Value
    cv(2) = r.Offset(0, 1).Value
    myDic1(r.Value) = cv()
  Next
  With Application
    UserForm1.ComboBox1.ColumnCount = 2
    UserForm1.ComboBox1.List = .Transpose(.Transpose(myDic1.items))
    End With
  Erase cv()

これで試してみてください。


>コンボボックスに表示させました
>以下のような2列を
>
>A列 B列
>100 la
>200 la
>300 ha
>400 ha
>300 la
>
>コンボボックス内に取得するにはどうするのですか?
>教えてください

【53249】Re:コンボボックス内の値取得
発言  ponpon  - 07/12/22(土) 23:57 -

引用なし
パスワード
   どうしてもDictionaryを使わなければならないのなら
ichinoseさんから回答が出ていますが、
私は、以下のようにしています。

  Dim myVal As Variant
  
  myVal = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 2).Value
  
  With UserForm1
     .ComboBox1.ColumnCount = 2
     .ComboBox1.List = myVal
  End With

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