SeleniumBasic ListClass コレクション(配列)の利用

リファレンス

概要

SeleniumBasicのコレクション用クラス。VBAのCollectionと異なり、扱い方は一次元配列とほぼ同等。

オブジェクト設定

・変数宣言

Dim List As List
Dim List As New List

※Driverから独立して使用する場合は、New付が必須

文法

Set List = Driver.[FindElements]
links.[メソッド]

メソッド・プロパティ

メソッド

スクロールできます
Name解説ShortExample
Addリストに値を追加List.Add "hoge"
AddRangeリストに複数の値を追加
(利用不可)
Containsリストに検索値が含まれていればTrueを返す
(実質利用不可)
Distinctリスト内重複削除links.Distinct
Firstリスト内最初のアイテムを貸すDebug.Print List.First
Get指定のインデックスの値を取得(=Item)Debug.Print List.Get(1)
Insert指定のインデックスに値を挿入するList.Insert 1, "age"
Lastリスト内最後のアイテムを貸すDebug.Print List.Last
RemoveAt指定のインデックスから値を削除するList.RemoveAt 1
Set指定のインデックスの値を上書きList.Set 1, "sage"
Sortリストを昇順で並び替えlinks.Sort
ToExcelリストをExcelに出力links.ToExcel
Valuesリストを配列で返すTarget() = links.Values

※Short Exampleは、動作確認ができたコードを記載しています。

プロパティ

スクロールできます
Name解説ShortExample
Countリストのアイテム数を貸すDebug.Print List.Count
Item指定したインデックスの値を返すDebug.Print List.Item(1)

※Short Exampleは、動作確認ができたコードを記載しています。

Example

Private Sub ListLinks()
    Dim Driver As New ChromeDriver
    Driver.Get "https://en.wikipedia.org/wiki/Main_Page"
    Dim links As List
    Set links = Driver.FindElementsByTag("a").Attribute("href")
    Debug.Print links.Count
    links.Distinct
    links.Sort  '昇順のみ
    Debug.Print links.Item(276)  'メモリ上重複データが残っている。⇒Distinct後は、個別アイテムの操作はしない方が良い。
    links.ToExcel
    Debug.Print links.Count
    Driver.Quit
End Sub

Use_ListAdd

Private Sub Use_ListAdd()
    Dim List As New List
    List.Add "hoge"
    Debug.Print List.Last
    Debug.Print List.Count
    List.Insert 1, "age"
    List.RemoveAt 1
    List.Set 1, "sage"
    Debug.Print List.First
    Debug.Print List.Count
    Debug.Print List.Get(1)
    Debug.Print List.Item(1)
End Sub

Use_ListValues

Private Sub Use_ListValues()
    Dim Driver As New ChromeDriver
    Driver.Get "https://en.wikipedia.org/wiki/Main_Page"
    Dim links As List
    Set links = Driver.FindElementsByTag("a").Attribute("href")
    links.Distinct
    Dim target(): target() = links.Values  'Targetへ重複削除後のデータ数が代入された
    Debug.Print UBound(target)
    Dim buf
    For Each buf In target
        Debug.Print buf
    Next buf
    Driver.Quit
End Sub

Distinct_Test

Private Sub Distinct_Test()
    Dim List As New List
    List.Add "sage"
    List.Add "sage"
    Debug.Print List.Item(1)
    Debug.Print List.Item(2)
    List.Distinct
    Debug.Print List.Count  'Countでは、1を返す(重複削除されている)
    List.ToExcel 'Excel出力は1アイテムで返す
    Debug.Print List.Item(1)
    Debug.Print List.Item(2) 'Distinct後も値が出力される
    Set List = Nothing
    Debug.Print List.Contains("sage")  '常にFalseを返す
End Sub
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。