设置字典
方法1
直接勾选这项,如果没有在去按照下面路径添加
'工具-引用-浏览-找到scrrun.dll-确定
Dictionary
不能直接Dim dic As New Dictionary,直接dim 无效
方法2 (推荐)
Dim dic
Set dic =
CreateObject("Scripting.Dictionary")
可以不去勾选引用,
两种方法各有优缺点,第一种比较繁琐,第二种比较简单,但是第二种就不会出现提示
字典相当于一个两列的数组,但是不会出现重复值
给字典赋值的两种方式
1 dic.add 1,”张三”
dic.add 2,”李四”
意思是把1,张三,2,李四,赋给字典,1和2是key,张三和李四是ITEM,range(a10)=dic(2)就会返回李四,相当于一个查找。这种赋值方法有一个缺陷,就是当dic.add 2 “王五”,就会奔溃,因为不能给KEY重复赋值
第二种赋值方法
Dic(1)=”张三“
Dic(2)= “李四“
意思是把1,张三,2,李四,赋给字典,1和2是key,张三和李四是ITEM,但是如果这时候还写一个dic(2)=”王五“,就不会出现奔溃,只是原来2对应的item是李四,现在是王五。
字典里面的KEY 是不能够有重复值的,如果用第一种方式,一旦KEY重复了,就会出错,但是第二种方式,出现相同的KEY,最后给KEY定义的什么item ,key就会对应的是最后那个item
在计算字典里key 的个数时
这样写计数(计算DIC里面共有多少KEY时)会出现把重复值都算进去
下面这种写法就不会了
Dic(range(d&i)),value=range(e&i).value
Sub test()
Dim arr()
Dim dic As New Dictionary
arr = Range("a2:b13")
For i = LBound(arr) To UBound(arr)
dic(arr(i, 2)) = 1 给字典赋值,之所以全部的item都是1,是因为我们要的数值是KEY,item没什么意义。
Next
Sheet2.ListBox1.List = dic.Keys
End Sub
这个是在视图 工具箱里面打开的,当窗体激活,给LISTBOX1里面写入值
Private Sub UserForm_Activate()
Dimdic
Setdic = CreateObject("Scripting.Dictionary")
arr= Sheet1.Range("a2:e14")
Fori = LBound(arr) To UBound(arr)
dic(arr(i, 2)) = 1
Next
Me.ListBox1.List= dic.keys (不是Me.ListBox1.item add,是dic.keys,不是dic(arr(i, 2))
End Sub
Private Sub CommandButton1_Click()
Me.ListBox5.Visible = True
If Me.ListBox1.Value <> ""And Me.ListBox2.Value <> "" And Me.ListBox3.Value <>"" And Me.TextBox1 > 0 Then
Me.ListBox4.AddItem
Me.ListBox4.List(Me.ListBox4.ListCount - 1,0) = ID
Me.ListBox4.List(Me.ListBox4.ListCount - 1,1) = Me.ListBox1.Value
Me.ListBox4.List(Me.ListBox4.ListCount - 1,2) = Me.ListBox2.Value
Me.ListBox4.List(Me.ListBox4.ListCount - 1,3) = Me.ListBox3.Value
Me.ListBox4.List(Me.ListBox4.ListCount - 1,4) = Me.TextBox1.Value
Me.ListBox4.List(Me.ListBox4.ListCount - 1,5) = Me.TextBox1.Value * Me.Label2.Caption
Else
MsgBox "请正确选择商品"
End If
End Sub
网友评论