読者です 読者をやめる 読者になる 読者になる

カメニッキ

カメとインコと釣りの人です

VB6で配列の重複を除去する

Rubyやった後にVBを触ると吐き気がします…。

言語機能として重複を削除する関数はありませんので、自作します。

Dictionaryの重複を許さないという性質を利用し、

'引数は参照渡しで受け取る。
Public Sub removeArrayDuplication(ByRef arr As Variant)
  Dim dic As Object
  Dim myKey As Variant
  Dim val As Variant
  Set dic = CreateObject("Scripting.Dictionary")
  Dim keys
  '引数で受け取った配列の全要素分ループ
  For Each val In arr
    'dictionary内に同一キーが無いことを確認
    If Not dic.Exists(val) Then
      'dictionaryに追加
      dic.Add val, Null
    End If
  Next

  '配列の要素数を変更
  ReDim arr(dic.Count - 1)
  keys = dic.keys
  Dim i As Integer
  'dictionary全てを配列に再度格納
  For i = 0 To dic.Count - 1
    arr(i) = keys(i)
  Next i

  Set dic = Nothing
End Sub

エラー処理とかはしてないです。

広告を非表示にする