VBA数组与字典笔记

博客记录了数组和字典的相关操作。包括数组的.resize方法及获取行数和列数,字典的定义、将keys和items赋给数组、判断键是否存在、遍历字典等操作,还提及了弹窗msgbox的使用及利用keys和Items方法输出关键字和条目。
1、crr = Range("A1").CurrentRegion '以A1为起点的连续区域给数组
2、Range("K1").Resize(UBound(crr, 1), UBound(crr, 2)) = crr

'.resize(行数,列数),ubound(crr,1)为整个数组的行数,ubound(crr,2)为整个数组的列数,该语句相当于将整个数组复制到以K1为起点的区域

3、 Set outrange = Range("P1").Resize(UBound(crr, 1), 1) 
	outrange.Value = Application.Index(crr, 0, 3)
	'先定义输出数组的行数和列数,该语句相当于定义了数组的行数,列数为一列
	'然后用index将数组对应的值给输出数组,Application.Index(数组, 行数(如果为0为全部行), 数组第几列)
    

4、字典的定义

Dim dic As Object, key As String, dickeys, Item, dicItems
Set dic = CreateObject("scripting.dictionary")

5、字典的keys和items直接给数组

arr1 = dic.Keys                             '将关键字赋予arr1
arr2 = dic.Items                            '将条目赋予arr2

6、判断字典键(key)是否存在:
可以使用“Exists”方法判断一个键是否存在于字典中。例如:

If dict.Exists("apple") Then
		MsgBox "存在"
Else
		MsgBox "不存在"
End If

7、遍历字典:
可以使用“For Each”语句来遍历字典中的键值对。例如:

Dim key As Variant
For Each key In dict.Keys
	MsgBox key & ": " & dict(key)
Next key

8、弹窗msgbox

MsgBox "关键字:及时雨" & vbcrlf & "条   目:" & .Item("及时雨"), vbOKOnly, ".Add ""及时雨"", ""宋江"""

标题为:.Add “及时雨”, “宋江”,vbOKOnly是添加弹窗标题的
内容为:关键字:及时雨" & vbcrlf & “条 目:” & .Item(“及时雨”)
9、'利用keys方法和Items方法输出所有关键字和所有条目

Sub Keys与Items方法输入数组()
	  With CreateObject("scripting.dictionary") '创建字典对象
		.Add "及时雨", "宋江"                   '添加第一个条目对
		.Add "黑旋风", "李逵"                   '添加第二个条目对
		.Add "拼命三郞", "石秀"                 '添加第三个条目对
		.Add "呼保义", "宋江"                   '添加第四个条目对
		'将4个关键字导出到A1:A4区域中,必须选择区域
		Range("A1:A4") = WorksheetFunction.Transpose(.Keys)
		'将4个条目导出到B1:B4区域中
		Range("B1:B4") = WorksheetFunction.Transpose(.Items)
	 End With
End Sub
VBA中,虽然没有像Python那样的原生字典类型,但可以通过`Scripting.Dictionary`对象来实现类似的功能。嵌套字典通常用于存储复杂的数据结构,例如在一个字典中存储另一个字典作为其值。这种结构可以用来表示层次化的数据或关联多个层级的信息。 要实现数组嵌套字典,可以通过创建一个包含多个`Scripting.Dictionary`对象的数组。每个数组元素可以是一个字典,这些字典又可以包含其他字典作为其键值对的一部分。这样可以构建出多层嵌套的结构。 下面是一个简单的示例,展示如何在VBA中创建和使用嵌套字典: ```vba Sub NestedDictionaryExample() Dim dict1 As Object Dim dict2 As Object Dim dict3 As Object Dim nestedDict As Object Dim i As Integer ' 创建字典对象 Set dict1 = CreateObject("Scripting.Dictionary") Set dict2 = CreateObject("Scripting.Dictionary") Set dict3 = CreateObject("Scripting.Dictionary") Set nestedDict = CreateObject("Scripting.Dictionary") ' 向字典1中添加一些键值对 For i = 1 To 3 dict1.Add "Key" & i, "Value" & i Next i ' 向字典2中添加一些键值对 For i = 4 To 6 dict2.Add "Key" & i, "Value" & i Next i ' 向字典3中添加一些键值对 For i = 7 To 9 dict3.Add "Key" & i, "Value" & i Next i ' 将字典1、2、3作为值添加到嵌套字典中 nestedDict.Add "Dict1", dict1 nestedDict.Add "Dict2", dict2 nestedDict.Add "Dict3", dict3 ' 输出嵌套字典的内容 Dim key1 As Variant Dim key2 As Variant For Each key1 In nestedDict.Keys Debug.Print "Top-level key: " & key1 For Each key2 In nestedDict(key1).Keys Debug.Print " Sub-key: " & key2 & ", Value: " & nestedDict(key1)(key2) Next key2 Next key1 End Sub ``` 在这个示例中,首先创建了三个字典`dict1`、`dict2`和`dict3`,并向它们各自添加了一些键值对。然后,创建了一个名为`nestedDict`的字典,将这三个字典作为值添加进去。最后,遍历`nestedDict`及其内部的字典,输出它们的内容。 这种方法可以灵活地处理复杂的数据结构,使得数据的组织和访问更加直观和高效[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

补丁515

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值