11字典

作者: 沈婷_bbf1 | 来源:发表于2018-05-26 09:42 被阅读27次

    设置字典

    方法1

    直接勾选这项,如果没有在去按照下面路径添加

    '工具-引用-浏览-找到scrrun.dll-确定


    Dim dic As New

    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(range(d&i))=range(e&i)

    这样写计数(计算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

    相关文章

      网友评论

          本文标题:11字典

          本文链接:https://www.haomeiwen.com/subject/ulopjftx.html