vb编程实例讲解、告诉我一些简单的vb编程代码?( 二 )


  • Cells(120 - i, 1) = TempArray(RndNumber) + 1

  • TempArray(RndNumber) = TempArray(i)

  • Next i

  • End Sub

  • 4、无重复随机数算法三
    这个算法使用字典对象完成去重复,和第一个算法差不多,但程序看上去简洁一点,嗯,起码新颖一点 。
    [vb] view plain copy print?
  • ' 产生20个1-100之间的不重复随机数

  • Sub RndNumberNoRepeat3()

  • Dim d As Object 'New Dictionary

  • Dim s As Integer


  • Randomize (Timer) '初始化随机数生成器

  • Set d = CreateObject("Scripting.Dictionary")


  • Do Until d.Count = 20

  • s = Int(Rnd * 100 + 1)

  • d(s) = ""

  • Loop

  • [a21].Resize(d.Count, 1) = Application.Transpose(d.Keys)

  • End Sub

  • 附:VBA中Dictionary对象使用小结

  • Dim dict

  • ' 创建Dictionary

  • Set dict = CreateObject("Scripting.Dictionary")

  • ' 增加项目

  • dict.Add "A", 300

  • dict.Add "B", 400

  • dict.Add "C", 500

  • ' 统计项目数

  • n = dict.Count

  • ' 删除项目

  • dict.Remove ("A")

  • ' 判断字典中是否包含关键字

  • dict.exists ("B")

  • ' 取关键字对应的值,注意在使用前需要判断是否存在key,否则dict中会多出一条记录

  • Value = https://www.08ts.cn/dict.Item("B")

  • ' 修改关键字对应的值,如不存在则创建新的项目

  • dict.Item("B") = 1000

  • dict.Item("D") = 800

  • ' 对字典进行循环

  • k = dict.keys

  • v = dict.Items

  • For i = 0 To dict.Count - 1

  • key = k(i)

  • Value = https://www.08ts.cn/v(i)

  • MsgBox key & Value

  • Next

  • ' 删除所有项目

  • dict.Removeall

  • 实例:
  • Sub 宏1()

  • Set dic = CreateObject("Scripting.Dictionary") '字典

  • For i = 1 To 10000

  • If Not i Like "*4*" Then

  • dic.Add i, "" '如果不包含“1”

  • End If

  • Next

  • Range("a2").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys) '从A2单元开始向下放置

  • End Sub

  • =========================================================================

  • 又 Tranpose工作表函数的用法实例

  • '把一行多列的二维数组转换成一维数组

  • Sub test()

  • Dim arr, arrt

  • arr = Range("a1:j1")

  • arrt = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))

  • Stop

  • End Sub

  • 首先看看TRANSPOSE函数的基础用法 。官方帮助说明,TRANSPOSE函数可返回转置单元格区域,即将行单元格区域转置成列单元格区域,反之亦然 。

  • TRANSPOSE函数语法是:TRANSPOSE(array)

  • Array参数是需要进行转置的数组或工作表上的单元格区域 。所谓数组的转置就是,将数组的第一行作为新数组的第一列,数组的第二行作为新数组的第二列,以此类推



  • Q2:急!关于VB,简单的程序设计
    分类:电脑IT
    四、数组中常见错误和注意事项
    1.静态数组声明下标出现变量
    n = InputBox("输入数组的上界")
    Dim a(1 To n) As Integer
    2.数组下标越界
    引用的下标比数组声明时的下标范围大或小 。
    Dim a(1 To 30) As Long, I as integer
    a(1) = 1: a(2) = 1
    For i = 3 To 30
    a(i) = a(i - 2) + a(i - 1)
    Next I
    3.数组维数错
    数组声明时的维数与引用数组元素时的维数不一致 。
    Dim a(3, 5) As Long
    a(I)=10
    4.Aarry函数使用问题
    只能对Variant 的变量或动态数组赋值 。
    5.获得数组的上界、下界
    UBound 、Lbound函数
    1.Dim数组声明
    有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:
    n=InputBox("输入数组的上界")
    Dim a(1 To n)As Integer
    程序运行时将在Dim语句处显示"要求常数表达式"的出错信息 。即Dim语句中声明的数组上、下界必须是常数,不能是变量 。
    解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:
    Dim a()As Integer
    n=InputBox ("输入数组的上界")
    ReDim a(1 To n) As Integer


    推荐阅读