Board logo

標題: [發問] 偷懶的差異?? [打印本頁]

作者: Andy2483    時間: 2022-10-27 08:09     標題: 偷懶的差異??

本帖最後由 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
作者: Andy2483    時間: 2022-10-27 08:33

圖片可以上傳了!謝謝 小誌前輩
補充圖片
偷懶的查詢方式:
[attach]35410[/attach]

[attach]35411[/attach]

[attach]35412[/attach]

標準的查詢方式:
[attach]35413[/attach]

[attach]35414[/attach]

[attach]35415[/attach]
作者: Andy2483    時間: 2022-10-27 12:58

把key與item 轉置出來做驗證
[attach]35418[/attach]

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)