返回列表 上一主題 發帖

[發問] 偷懶的差異??

[發問] 偷懶的差異??

本帖最後由 Andy2483 於 2022-10-27 08:13 編輯

各位前輩早安
昨天在論壇學習字典發現差異!
先講目前認知的結論,請各位前輩指正並指導!謝謝
任何非 Exists() 方法查詢字典的步驟程序可能會變動字典的數量??
1.標準的 Dictionary 物件中搜尋的索引 鍵 值
For i = 1 To 20
   If Y.Exists(i) Then

2.偷懶的 Dictionary 物件中搜尋的索引 鍵 值
For i = 1 To 20
   If Y(i) = "" Then

心得差異說明如下:
偷懶的方式
Sub TEST_Count_1()
Dim Y, i, x, j
Set Y = CreateObject("Scripting.Dictionary")
Y(1) = 1
MsgBox Y.Count
For i = 1 To 20
   If Y(i) = "" Then

   End If
Next
MsgBox Y.Count
For Each x In Y.KEYS
   j = j + 1
Next
MsgBox j
End Sub

視窗會顯示 1  →  20  →  20
--------------------------------------------------
標準的方式
Sub TEST_Count_2()
Dim Y, i, x, j
Set Y = CreateObject("Scripting.Dictionary")
Y(1) = 1
MsgBox Y.Count
For i = 1 To 20
   If Y.Exists(i) Then

   End If
Next
MsgBox Y.Count
For Each x In Y.KEYS
   j = j + 1
Next
MsgBox j
End Sub

視窗會顯示 1  →  1  →  1

圖片可以上傳了!謝謝 小誌前輩
補充圖片
偷懶的查詢方式:
1.jpg
2022-10-27 08:28


2.jpg
2022-10-27 08:31


3.jpg
2022-10-27 08:32


標準的查詢方式:
1 - 複製.jpg
2022-10-27 08:32


1 - 複製 (2).jpg
2022-10-27 08:33


1 - 複製 (3).jpg
2022-10-27 08:33

TOP

把key與item 轉置出來做驗證
2022-10-27_125342.JPG
2022-10-27 12:56


Option Explicit
Sub TEST_Count_3()
Dim Y, i, x, j
Set Y = CreateObject("Scripting.Dictionary")
Y(1) = 1
For i = 1 To 20
   If Y(i) = i Then

   End If
Next
Workbooks.Add
[A1].Resize(Y.Count, 1) = Application.Transpose(Y.KEYS)
[B1].Resize(Y.Count, 1) = Application.Transpose(Y.ITEMS)
End Sub

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題