Excel VBA質問箱 IV

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

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


31330 / 76738 ←次へ | 前へ→

【50659】Re:コンボボックスにデータをいれる
発言  Hirofumi  - 07/8/7(火) 20:21 -

引用なし
パスワード
   Option Explicit

Private rngList As Range
Private lngRows As Long

'************************
'画面起動時
'************************
Private Sub UserForm_Initialize()

'  Dim dic As Object
  Dim i As Long
'  Dim mykey As String
  Dim j As Long
  Dim vntData As Variant
  Dim vntList() As Variant
  Dim lngMax As Long

'  Set dic = CreateObject("Scripting.Dictionary")
'  With Sheets("データベース")
'    For i = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
'      mykey = .Cells(i, 5).Value
'      If Not dic.Exists(mykey) Then dic.Add mykey, mykey
'    Next
'  End With
'
'  UserForm1.ComboBox1.List = dic.Keys
'  Set dic = Nothing

'  Set rngList = Sheets("データベース").Cells(1, "E") '変?
  Set rngList = Sheets("データベース").Cells(3, "E")
  With rngList
    'List行数を取得
    lngRows = .Offset(Rows.Count - .Row).End(xlUp).Row - .Row + 1
    'E列を配列に取得
    vntData = .Resize(lngRows + 1).Value
  End With
  
  'ComboBoxのListを作成
  'List用配列を確保
  ReDim vntList(lngMax)
  '先頭データを無条件で代入
  vntList(lngMax) = vntData(1, 1)
  'E列データ2行目〜最終まで繰り返し
  For i = 2 To lngRows
    'List用配列の中を探索
    For j = 0 To lngMax
      '重複が有った場合
      If vntData(i, 1) = vntList(j) Then
        Exit For
      End If
    Next j
    '重複が無いなら
    If j > lngMax Then
      'List用配列を拡張して末尾にデータを追加
      lngMax = lngMax + 1
      ReDim Preserve vntList(lngMax)
      vntList(lngMax) = vntData(i, 1)
    End If
  Next i
  
  UserForm1.ComboBox1.List = vntList

End Sub

IEのバージョンが4.0or5.0?なのでは?
遅く成るけど、取りあえず上記の様にすれば、重複なしでListが得られると思います

PS:
ただ、気に成る所が1か所有ります
元のコードだと、ComboBoxのデータは、E列3行目から下に取っているのですが?
UserFormで操作しているListは、データが1行目から有る事に成っています
これでは、矛盾が生じるのでは?

0 hits

【50639】コンボボックスにデータをいれる まー 07/8/6(月) 21:00 質問
【50647】Re:コンボボックスにデータをいれる Blue 07/8/7(火) 9:15 発言
【50652】Re:コンボボックスにデータをいれる Jaka 07/8/7(火) 16:18 発言
【50654】Re:コンボボックスにデータをいれる neptune 07/8/7(火) 17:52 発言
【50659】Re:コンボボックスにデータをいれる Hirofumi 07/8/7(火) 20:21 発言
【50661】Re:コンボボックスにデータをいれる まー 07/8/7(火) 20:54 お礼

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