關於VBA字典知識點66問

2021-01-11 木子微媒

1. 什麼是字典?

答:字典(Dictionary)對象是微軟Windows腳本語言中的一個很有用的對象。例如,有名的正則表達式

( RegExp)對象以及能方便處理驅動器、文件夾和文件的( FileSystemObject )對象也是微軟Windows腳本語言

中的一份子。

字典對象相當於一種聯合數組,它是由具有唯一性的關鍵字( Key)和它的項(Item)(注釋)聯合組成。就好像一本

字典書一樣,是由很多生字和對它們對應的註解所組成。

2. Dictionary是什麼意思?

答:字典

3. Key是什麼意思?

答:關鍵字。

4. Item是什麼意思?

答:項,條目,注釋。

5. 字典對象的方法有哪些?

答:字典對象共有6個方法:

1) Add:

2) Keys:

3) Items

4) Exists

5) Remove

6) Removeall

6. Add方法是什麼意思?

答:向dictionary對象中添加一個關鍵字項目對。

7. Add方法的表達式是什麼?

答:object.add(key,item)

8. Object 是什麼意思?

答:指一個dictionary對象的名稱。

9. Key是什麼意思?

答:指與被添加的item相關聯的key。

10. Item是什麼意思?

答:指與被添加的key相關聯的ltem。

11. 在使用add方法時的注意事項是什麼?

答:如果key已經存在,將導致一個錯誤,提示如下:

12. 字典對象為什麼需要先綁定?

答:因為字典不存在與VBA中,故此想要在VBA中使用字典,必須先綁定字典對象。

13. 創建字典對象的方法有哪些?

答:有前期綁定法和後期綁定法。

14. 如何通過前期綁定發創建字典對象?

答:VBE→窗口→工具→引用→瀏覽→搜索篩選器→輸入scrrun.dll→選定scrrun.dll文件→在可使用的引用菜單中→找到Miscrosoft scripting runtime→在前面的方括號中打鉤→點確定。

15. 如何通過後期綁定發創建字典對象?

答:通過如下代碼創建:

Dim d as object '此語句也可以寫成Dim d

Set d =createobject("scripting.dictonary")

16. 前期綁定法與後期綁定法有何區別?

答:兩種綁定方法的區別:

1) 使用前期綁定法,寫好的代碼發給別人使用時,別人也需要在他的VBE窗口中點擊工具→引用→瀏覽→找到scrrun.dll文件→確定。對於不懂的人來說,比照麻煩,而直接創建法(即後期綁定法)不需要這些,可以直接使用。

2) 使用前期綁定法,在寫代碼時,使用字典的屬性或者方法時會有提示,如果是直接創建的字典則不會有提醒。

3) 所以,我們剛開始接觸字典時可以使用前期綁定,然後再改為直接創建,這樣可以有提示,又能練習直接創建字典的代碼的寫法,方便學習。

17. D.add "a","Athens"是什麼意思?

答:添加一個項目對,關鍵為a,對應的項為Athens。

18. Exists方法是什麼意思?

答:如果dictionary對象中存在所指定的關鍵字則返回true,否則返回false。

19. Exists語法表達式什麼?

答:object.exists(key)

20. If d.exists("c") then是什麼意思?

答:若字典中存在關鍵字"c",則執行下面的語句。

21. Msg ="指定的關鍵字已經存在"是什麼意思?

答:把"指定的關鍵字已經存在"的字符串賦給變量msg。

22. Keys方法是什麼意思?

答:返回一個數組,其中包含了一個dictionary對象中全部現有的關鍵字。

23. Keys方法的語法表達式是什麼?

答:object.keys()

24. K=d.keys是什麼意思?

答:把字典中存在的關鍵字賦給變量k,得到的是一個一維數組,下限為0,上限為d.count-1,這是數組的默認形式。

25. 什麼是一維數組?

答:即下標個數為1的數組。

26. 什麼是數組?

答:把類型相同的一組數據(數值或字符)放在一起,用統一的名字代表這一組數據,用整數做下標表示它的各個數據間區別及順序,這就是數組。

27. [B1].resizede(d.count,1)=application.transpose(k)是什麼意思?

答:resize是range對象的一個屬性,用於調整指定區域的大小,它有參數,第一個是行數,d.count指字典中關鍵字key的數量,整個字典中有多少個關鍵字,就顯示多少。第二個數字1指的是列數.

"="左邊的意思是:把一個單元格B1調整為以B1開始的一列單元格區域,行數等於字典中關鍵字的數量d.count,就是把單元格B1調整為單元格區域B1:B3.

"="右邊的k是一個是水平排列的一維數組,如果需要把水平排列的數值轉換成縱向排列,就需要用到工作表內置的轉置函數transpose,但在VBA中不能直接使用該工作表函數,需要通過application對象的worksheetfunction屬性來使用它。

所以完整的寫法應為application.worksheetfunction.transpose(k),中間的worksheetfunction可以省略。

綜述,上述代碼的意思就是把字典中所有的關鍵字賦給以B1單元格開始的單元格區域中。

28. D.count從哪兒可以查看到?

答:VBE窗口→視圖→本地窗口→按F8(或者點擊調試→逐語句),即可在VBE窗口的下方本地窗口中D.count,注意點開d前面的+號,這樣就可以看到count屬性值了。

29. 什麼是items方法?

答:返回一個數組,其中包含了一個dictionary對象中的所有項目。

30. Items方法的語句表達式是什麼?

答:object.items()

31. T=d.items是什麼意思?

答:把字典中所有關鍵字對應的項賦給變量t,得到的也是一維數組,下限為0,上限為d.count-1.

32. 什麼是remove方法?

答:remove方法指從一個dictionary對象中清除一個關鍵字和它對應的項,即一個項目對。

33. 使用remove方法的注意事項是什麼?

答:如果所指定的關鍵字和項目不存在,那麼將導致一個錯誤,如下圖所示:

34. d.remove("b")是什麼意思?

答:清除字典中"b"關鍵字和他對應的項,即這個項目對被清除掉。

35. 什麼是removeall方法?

答:remove方法指從一個dictionary對象中清除所有的關鍵字和他對應的項,即所有項目對。

36. D.removeall是什麼意思?

答:清除字典中所有的數據,也就是清空這個字典。

37. 字典對象的屬性有哪些?

答:字典對象共有四個屬性:

1) Count

2) Key

3) Item

4) Comparemode

38. 什麼是count屬性?

答:返回一個dictionary對象中的項目數,只讀屬性。

39. Count屬性的語句表達式是什麼?

答:object.count

40. n=d.count是什麼意思?

答:把字典中所有關鍵字的數量賦給變量n,也就是有多少個關鍵字key。

41. 什麼是key屬性?

答:在dictionary對象中設置一個key值。

42. Key屬性的語句表達式是什麼?

答:object.key("key")=newkey

43. d.key("c")="d"是什麼意思?

答:用新的關鍵字"d"來替換指定的關鍵字"c",這時字典中就沒有關鍵字"c"了,只有關鍵字"d",原先與"c"對應的item項值就成了"d"的項目值了,即"d"和item項值就成了一個項目對。

44. 什麼是item屬性?

答:在一個dictionary對象中設置或者返回所指定關鍵字key的項目值item,對於集合則根據所指定的key返回一個item,讀/寫。

45. Item的語句表達式是什麼?

答:object.item(key)[=newitem]

46. Newitem是什麼意思?

答:指與所指定的key相關聯的新項目值。

47. 在試圖返回item屬性時,注意事項是什麼?

答:如果在試圖改變一個關鍵字key的時候沒有找到該item值,那麼將利用所指定的newitem創建一個新的key;如果在試圖返回一個已有item項目的時候沒有找到key,那麼將創建一個新的key且與其相關的item項目被設置為空,即這是一個item為空的項目對。

48. D.item("c")是什麼意思?

答:獲取指定的關鍵字"c"所對應的item項。

49. 什麼是comparemode屬性?

答:指設置或者返回在dictionary對象中進行字符串關鍵字比照時所使用的比照模式。

50. Comparemode屬性語句表達式是什麼?

答:object.comparemode=[compare]

51. Compare是什麼意思?

答:是一個可選項,如果提供了此項,compare就是一個代表比照模式的值,可以使用的值是0(二進位),1(文本),2(資料庫),如下圖所示:

52. d.comparemode=vbtextcompare是什麼意思?

答:指文本比照模式,即不區分關鍵字英文大小寫,vbtextcompare的值為1,所以上式也可以寫為d.comparemode=1

53. d.comparemode=vbbinarycompare是什麼意思?

答:指二進位比照模式,即區分關鍵字英文大小寫,vbbinarycompare的值為0,所以上式也可以寫為d.comparemode=0

54. Dim s As New dictionary是什麼意思?

答:聲明變量s為一個新字典,特別注意此語句只能用於前期字典對象綁定法。

55. m = s.Keys(0)是什麼意思?

答:指取出字典對象s中第一個key值,這是一種取出字典對象key值的一種方法。注意:注意字典中第一個key值默認起始位置為0,所以s.keys(0)為第一個key。

56. m = Application.Index(s.Keys, 1)是什麼意思?

答:這是從字典對象中取出key值的一種方法,利用的是工作表函數index。

57. n = s.Keys m = n(0)是什麼意思?

答:這是從字典對象中取出key值的一種方法,即數組法,也就是先把字典對象s的全部key值賦給一個數組n,然後從數組n中取出第一個key值賦給變量m。

58. m = s.Items(0)是什麼意思?

答:這是一種取出字典item項目值的方法,指從字典對象s中取出第一個item項目值。

59. m = Application.Index(s.Items, 1)是什麼意思?

答:這是一種取出字典item項目值的方法,指從字典對象s中取出第一個item項目值,利用的工作表函數index。

60. n = s.Items m = n(0)是什麼意思?

答:這是一種取出字典item項目值的方法,指從字典對象s中取出第一個item項目值,即數組法,也就是先把字典對象s的全部item值賦給變量n,得到的是一個數組,然後從數組n中取出第一個item值賦給變量m。

61. m = s("a")是什麼意思?

答:這是一種取出字典對象s中item項目值的方法,指從字典對象s中取出關鍵字"a"的item項目值,即項目對法,利用的是關鍵字和項目值的相互關聯性。

62. 在取出字典key值的方法中,需要注意什麼?

答:keys法只能用於字典對象前期綁定法,在後期綁定法中無法使用,舉例說明:m = s.Keys(0)。

63. 在取出字典item值的方法中,需要注意什麼?

答:items法只能用於字典對象前期綁定法,在後期綁定法中無法使用,舉例說明:m = s.items(0)。

64. d.Key("A") = "AAA"是什麼意思?

答:指將字典對象d中的關鍵字key"A"更改為"AAA".

65. d.Item("B") = "A0036"

答:指將字典對象d中的關鍵字key為"B"的item值更改為"A0036".

66. d("B")="A0036"是什麼意思?

答:這是d.Item("B") = "A0036"的簡寫。

相關焦點

  • Excel VBA字典技術,提取第一次記錄
    ,今天我們系統的說下字典的作用!初識字典字典(Dictionary):是微軟Windows腳本語言中的一個很有用的對象。字典可以理解為一個特殊的二維數組,由key(鍵)和Item組成,其中key具有唯一性和不重複性;字典並不存在於VBA中,需要調用,調用方法:Set d = CreateObject("scripting.Dictionary");向字典中添加鍵、值:d.Add key1, Item1;獲取字典的所有key:d.Keys,返回一個數組
  • 如何將Excel數據表單元格保存為數組,VBA數組進階應用
    No.1在vba編程中,數組應用是一個十分有用的方法。如何把數據表作為數組進行處理,是編程過程中的一個重要技能。學會之後,將大大提高編程技術,也將使數據處理的過程變得更加流暢。No.2上圖為例,把表格內容作為數組值進行保存,然後通過流程編碼對成績進行一個比較判斷,最終得出一個成績等級的判定。
  • Python實驗課:字典數據的複製與遍歷
    一、實驗目的及內容(1)字典的複製(2)字典的遍歷二、實驗過程1、字典的複製(1)啟動IDLE開發環境,並新建一個Python模塊文件。字典的複製就是在原有字典的基礎上,創建一個新的字典。Python提供了兩種方式來複製字典:一種方式是淺複製方式;一種方式是深複製方式。我們先來看淺複製方式,淺複製只是把當前字典內的列表、元組等可迭代對象的引用複製給新字典,當原字典的可迭代對象內容改變時,新字典的可迭代對象內容也會改變。字典對象的copy()方法可以淺複製一個字典數據。
  • VBA數組數據回填工作表
    關於單元格的Resize屬性,在我的教程《VBA代碼解決方案》中有詳細的講解大家可以參考。這裡我們要注意的是對於對象變量的賦值用的是SET: Set MyRange = Range("A1"),這一點在我的教程《VBA中類的解讀及應用》中已經詳細的說明,大家要注意對象變量和普通變量的區別。
  • 利用VBA代碼將文本轉換為數組函數
    當前的代碼多是出自VBA數組與字典解決方案,今日分享的是NO.245,內容是:VBA過程代碼246:文本轉換為數組函數SplitSub MyNZ()Dim Arr As VariantArr = Split(Sheets("21").Cells(1, 1), " ")Sheets("21").Cells(3, 1).Resize(
  • VBA中動態數組的創建及利用
    第一:VBA代碼解決方案,是VBA中各個知識點的講解,覆蓋了絕大多數的知識點;第二:VBA資料庫解決方案,是數據處理的專業利器,介紹利用ADO連接ACCDB,EXCEL。第三:VBA數組與字典解決方案,講解VBA中的數組和字典的利用。第四:VBA代碼解決方案之視頻,是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。
  • VBA代碼中數組的拆分與合併的實現
    當前的代碼多是出自」VBA數組與字典解決方案」,有一些朋友反映分享的內容不能很好的理解,可以參考這套資料的內容進行研讀。今日分享的是第250集。第一:VBA代碼解決方案,是VBA中各個知識點的講解,覆蓋了絕大多數的知識點;第二:VBA資料庫解決方案,是數據處理的專業利器,介紹利用ADO連接ACCDB,EXCEL。第三:VBA數組與字典解決方案,講解VBA中的數組和字典的利用。第四:VBA代碼解決方案之視頻,是專門面向初學者的視頻講解,可以快速入門,更快地掌握這門技能。
  • With語句,提高VBA代碼運行速度的方案
    第一套:「VBA代碼解決方案」是PDF教程,是VBA中各個知識點的講解,覆蓋了絕大多數的知識點,是初學及中級以下人員必備;第二套:「VBA資料庫解決方案」是PDF教程,資料庫是數據處理的利器,對於中級人員應該掌握這個內容了。
  • VBA中的If-Then-Else語句
    大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。
  • 新華字典:印了5億冊,你肯定看過
    自從第一版1953年問世以來直到去年7月,《新華字典》全球發行量共達5.67億本。上個月,金氏世界紀錄機構宣布,《新華字典》獲得「最受歡迎的字典」和「最暢銷的書(定期修訂)」兩項金氏世界紀錄。「有中文書的地方,就有新華字典」《新華字典》是新中國第一部以白話釋義、白話舉例的字典,至今出了11版。
  • 新華字典和好麗友派是什麼梗啥意思 XHZDHLYP段子內涵意思
    最近有一個梗還挺有意思的,是關於去拿一個包裹的故事,那就是新華字典和好麗友派,可能有的親們不是很懂,新華字典和好麗友派是什麼意思?新華字典和好麗友派什麼梗?下面就由小編為您詳細介紹介紹哦。  新華字典和好麗友派梗的出處  這個梗的大致出處是以下這樣的,小編就為大家分享一下。
  • 看《新華字典》的故事
    新華字典背後的故事  剛剛上市的第12版《新華字典》以其熟悉的面貌帶來一波回憶殺,又以其錄入「點讚」「打卡」等新詞以及同步上市的APP令人耳目一新。被譽為「國民字典」引發全民關注,經典的魅力何在?12版的「新」又體現在哪些方面?8月11日,市民在北京圖書大廈內選購新上市的《新華字典》(第12版)。
  • 初一英語上(第七單元)知識點梳理_死記硬背要不得_找準方法很關鍵
    初一英語上前三個單元,知識點少,易掌握。但從第四單元開始,知識點逐漸增多。英語的學習不只靠單詞詞彙量的積累,還要靠知識點的累積,再加上足夠量的閱讀。現就第七單元知識點梳理一下。(in the schoolbag為劃線部分)他的字典在書包裡。對 劃線部分提問:Where is his dictionary?他的字典在哪裡?
  • 不會用 Excel vba 製作二維碼,因為沒看這篇文章
    知識點:新建BarCodeCtrl 代碼格式Object.Controls.Add("BarCode.BarCodeCtrl.1", "BarName")解釋:這句代碼的意思是在Object對象裡,新建一個名稱為BarName二維碼其中Object 對象 可以是表單Form 等等,發揮想像吧!「BarName」名稱可以自己命名,也可以省略為默認名。
  • 利用VBA「積木」過程代碼,實現個人小型辦公自動化之224
    第一:VBA代碼解決方案,是VBA中各個知識點的講解,覆蓋了絕大多數的知識點;第二:VBA資料庫解決方案,是數據處理的專業利器,介紹利用ADO連接ACCDB,EXCEL。第三:VBA數組與字典解決方案,講解VBA中的數組和字典的利用。第四:VBA代碼解決方案之視頻,是專門面向初學者的視頻講解,可以快速入門,更快地掌握這門技能。
  • VBA網絡通信基礎
    由於涉及到文章的審核相關問題(設計到一些網址的話審核通過十分困難),關於網抓的內容在平臺上發表的不全,平臺發表的代碼有些運行不了,這是因為缺少某些自定義函數的過程,在其他的章節中。如果有需要學習網抓的朋友可以聯絡我分享這套教程。其中的程序文件是非常值得擁有的代碼源碼。
  • VBA數組函數、差值的取得以及利用FileCopy語句複製文件
    其一:「VBA代碼解決方案」PDF教程,是VBA中各個知識點的講解,覆蓋了絕大多數的知識點,是初學及中級以下人員必備;其二「VBA資料庫解決方案」PDF教程,資料庫是數據處理的利器,對於中級人員應該掌握這個內容了。其三「VBA數組與字典解決方案」PDF教程,講解VBA的精華----字典,是我們打開思路,提高代碼水平的必備。其四「VBA代碼解決方案」視頻教程。
  • Linux下的字典生成工具Crunch,創造自己的專屬字典
    Crunch是一種創建密碼字典工具,按照指定的規則生成密碼字典,可以靈活的制定自己的字典文件。使用Crunch工具生成的密碼可以輸出到屏幕,保存到文件、或另一個程序。由其在滲透測試需要爆破的時候,字典的編排等直接影響到我們的爆破速度,對整個滲透測試流程起著十分重要的作用。
  • VBA編程如何輸入輸出字符集,兩函數要掌握
    如何輸入字符,在vba編程過程中是一個基本常識。本節主要介紹一下,字符集對應的數值,以及如何輸入字符。很顯然,函數Chr即可輸出相應數值的字符。
  • python字典操作大全,學習python第7天
    python字典python字典概念:python字典可以用來存儲任意類型對象,python字典都是由一個鍵和一個值組成的「鍵值對」,兩者之間用冒號隔開,結構如:sco = {'name':'小明','age