精华内容
下载资源
问答
  • VB中动态数组的使用事项

    千次阅读 2019-02-27 16:05:14
    1.动态数组的使用时,先在窗体层、标准模块或过程声明一个没有下标的数组(括号不能省略),不指定维数。 2.在过程中用ReDim语句定义带下标的数组,给出数组的维数。注意:用ReDim定义的数组,只能改变数组元素的...

    1.动态数组的使用时,先在窗体层、标准模块或过程中声明一个没有下标的数组(括号不能省略),不指定维数。
    2.在过程中用ReDim语句定义带下标的数组,给出数组的维数。注意:用ReDim定义的数组,只能改变数组元素的个数,不能改变数组的维数和数据类型。

    以下举例几个错误类型:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 关于VB中的数组教程,数组的概念,动态数组的建立与声明
  • 在此之前,我们的随机...因为工作遇到的都是真实的数据,需要构建虚拟数据的环境不多。但是有一个应用场景对于很多人来说是实用的—那就是“数据脱敏”。在工作,可能你会遇到一些Excel问题需要求助他人。但是...

    在此之前,我们的随机函数有Rand和RandBetween函数。Rand函数没有参数,默认返回0-1之间的小数。而RandBetween函数则返回指定数据范围内的整数。

    可能对于大多数人来说,随机函数比较少用到。因为工作中遇到的都是真实的数据,需要构建虚拟数据的环境不多。但是有一个应用场景对于很多人来说是实用的那就是“数据脱敏”。

    在工作中,可能你会遇到一些Excel问题需要求助他人。但是单纯用文字来描述往往效率很低,如果能发你的Excel文件一同发给对方,效率会高很多。如果你的工作文件涉及到一些敏感数据的话,那么就可以用随机函数来构建一些虚拟数据,实现“脱敏”。

    RandArray语法

    d2a48c024aa79cba83c541fa08071a3a.png

    RandArray函数的参数看起来很多,但是用法并不复杂,所有参数均为可选参数。如果所有的参数都忽略—RandArray(),那么就只返回一个0-1之间的小数,跟Rand()是一样的效果。

    [Rows],[Columns]参数表示要返回几行几列的数据

    13c22263a09e9539948c6ed88779d50e.png

    如上图,返回的就是3行4列的数据,因为后面的参数没写,所以数据是0-1之间的小数。

    [Min],[Max] 显然表示的就是返回随机数的最小值和最大值

    6f3ede962129a262a6a684ef75814fbd.png

    上图,返回的就是3行4列,1-20之间的数据。因为最后一个参数忽略,返回的默认是小数。

    [whole_number] 参数是逻辑值,True表示证书,False或者忽略表示小数

    017ad97499675b222fe153ab1357bd88.png

    RandArray和Rand(RandBetween)函数有一个最明显的区别就是,RandArray返回指定大小的数组,而Rand(RandBetween)函数返回的仅仅是一个随机数。

    总的来说,这个新增的随机函数用法比较简单。如果在需要构建虚拟数据的场景下,可以试试哦。

    a224aec4450d3578785be6489b002189.png

    展开全文
  • 大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA如何使用动态数组,以及利用动态数组去除重复值的方法第二部分。在上一讲,我们讲了知识点的利用,其一是Filter函数,其二是ReDim语句的利用价值。...

    6547229f034d7cf89c247031e567c270.png

    大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法第二部分。在上一讲中,我们讲了知识点的利用,其一是Filter函数,其二是ReDim语句的利用价值。同时我们又讲了过程的定义。今日我们利用这些知识点,来完成我们的目的:使用动态数组去除文本中的重复值,

    如下面的代码所示。

    Sub MySplitarrtwo()

    Dim Splarr() As String

    Dim Arr() As String

    Dim Temp() As String

    Dim r As Integer

    Dim i As Integer

    On Error Resume Next

    Splarr = Split(Sheets("kk").Cells(1, 1).Range("a1"), " ")

    For i = 0 To UBound(Splarr)

    Temp = Filter(Arr, Splarr(i))

    If UBound(Temp) < 0 Then

    r = r + 1

    ReDim Preserve Arr(1 To r)

    Arr(r) = Splarr(i)

    End If

    Next

    Sheets("kk").Range("a5").Resize(r, 1) = Application.Transpose(Arr)

    End Sub

    代码解析:

    MySplitarr过程将工作表Sheets("kk")中A1单元格的文本去除重复值后写入到工作表Sheets("kk")中的A列单元格。

    第2行代码声明数组Splarr用来保存Sheets("kk")中A1单元格的文本。

    第3行代码声明数组Arr用来保存去除重复值后的文本。

    第4行代码声明数组Temp用来判断文本是否重复。

    第5行代码声明变量r用来保存去除重复值后的文本数量。

    第7行代码启动错误处理程序来忽略错误,因为在程序运行到第11行代码会发生下标越界错误。

    第8行代码使用Split 函数以Sheets("kk")中A1单元格的文本创建一个下标从零开始的一维数组。

    第9行代码使用For...Next语句遍历数组Splarr的所有元素。

    第10行代码使用Filter函数创建一个数组Temp用来保存以当前Splarr数组的值在Arr数组中的搜索结果。

    第11行代码根据返回的数组Temp的最大下标来判断当前Splarr数组的值是否重复。在使用使用Filter函数时如果没有相匹配的值,将返回一个空数组,最大下标小于0。

    第12行代码如果当前Splarr数组的值不重复则将变量r的值加1。

    第13行代码重新定义动态数组大小。

    第14行代码将不重复值添加到数组Arr中。

    第15行代码使用工作表Transpose函数将去除重复值的的文本转置后写入到工作表单元格中。

    代码的截图:

    3a0ab0d294265ff95da05aee1cc575c0.png

    运行前的截图:很显然有很多的重复数值:

    60b6f836cc8e9eb467190d86f0e506fa.png

    运行后的截图:

    fa2bdef0ca3aaeedb53257736c09749e.png

    今日内容回向:

    1 上述代码是否清楚了它的运行过程呢?

    2 第7行代码启动错误处理程序来忽略错误,这时为什么呢?

    欢迎大家到我的自媒体平台沟通交流:个人微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。

    这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。

    工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。

    展开全文
  • 大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA如何使用动态数组,以及利用动态数组去除重复值的方法第二部分。在上一讲,我们讲了知识点的利用,其一是Filter函数,其二是ReDim语句的利用价值。...

    大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法第二部分。在上一讲中,我们讲了知识点的利用,其一是Filter函数,其二是ReDim语句的利用价值。同时我们又讲了过程的定义。今日我们利用这些知识点,来完成我们的目的:使用动态数组去除文本中的重复值。

    如下面的代码所示。

    Sub MySplitarrtwo()

    Dim Splarr() As String

    Dim Arr() As String

    Dim Temp() As String

    Dim r As Integer

    Dim i As Integer

    On Error Resume Next

    Splarr = Split(Sheets("kk").Cells(1, 1).Range("a1"), " ")

    For i = 0 To UBound(Splarr)

    Temp = Filter(Arr, Splarr(i))

    If UBound(Temp) < 0 Then

    r = r + 1

    ReDim Preserve Arr(1 To r)

    Arr(r) = Splarr(i)

    End If

    Next

    Sheets("kk").Range("a5").Resize(r, 1) = Application.Transpose(Arr)

    End Sub

    代码解析:

    MySplitarr过程将工作表Sheets("kk")中A1单元格的文本去除重复值后写入到工作表Sheets("kk")中的A列单元格。

    第2行代码声明数组Splarr用来保存Sheets("kk")中A1单元格的文本。

    第3行代码声明数组Arr用来保存去除重复值后的文本。

    第4行代码声明数组Temp用来判断文本是否重复。

    第5行代码声明变量r用来保存去除重复值后的文本数量。

    第7行代码启动错误处理程序来忽略错误,因为在程序运行到第11行代码会发生下标越界错误。

    第8行代码使用Split 函数以Sheets("kk")中A1单元格的文本创建一个下标从零开始的一维数组。

    第9行代码使用For...Next语句遍历数组Splarr的所有元素。

    第10行代码使用Filter函数创建一个数组Temp用来保存以当前Splarr数组的值在Arr数组中的搜索结果。

    第11行代码根据返回的数组Temp的最大下标来判断当前Splarr数组的值是否重复。在使用使用Filter函数时如果没有相匹配的值,将返回一个空数组,最大下标小于0。

    第12行代码如果当前Splarr数组的值不重复则将变量r的值加1。

    第13行代码重新定义动态数组大小。

    第14行代码将不重复值添加到数组Arr中。

    第15行代码使用工作表Transpose函数将去除重复值的的文本转置后写入到工作表单元格中。

    代码的截图:

    2f0dc2e66dbe82a296c7302d67f1ad09.png

    运行前的截图:很显然有很多的重复数值:

    5ba624a19f0507bd1fc65535f2cd7f98.png

    运行后的截图:

    5d69c8ce01cee069be3faacef6c1d0dc.png

    今日内容回向:

    1 上述代码是否清楚了它的运行过程呢?

    2 第7行代码启动错误处理程序来忽略错误,这时为什么呢?

    展开全文
  • Private Sub Command1_Click() Text1.Text = “” Dim s As Long, i As Long Dim a() Do ReDim Preserve a(s) a(s) = InputBox(“请输入字符串,输入空串时结束”, “输入”) s = s + 1 Loop Until a(s - 1) = “” ...
  • vb动态数组

    2012-07-19 21:28:07
    最近老板逼着弄GIS ,找到了mapobject是空间,使用过程发现以前没解决的一个动态数组问题 闲话少说,进入正题 dim a() as string redim a(1) as string a(0)=0 a(1)=1 ReDim Preserve a(2) as string '这句...
  • 其次根据是否可以被重新定义,数组可以分为静态数组和动态数组。一维数组与多维数组一维数组,即上节课程介绍的形式,也是默认情况下的数组形式,一维数组特点是只有一个下标。例如定义一个含有5个元素的一维数组,...
  • 声明固定大小的数组有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:建立公用数组,在模块的声明段用 Public 语句声明数组。建立模块级数组,在模块的声明段用 Private 语句声明数组。建立...
  • vb.net动态控件数组

    千次阅读 2006-12-15 12:57:00
    vb.net里面的动态控件数组的问题,这个动态控件数组vb里面easy到极致,可是在vb.net里面却有点让人... 1、在form的头部定义一个公共的ArrayList类型的变量 Dim m_items As New ArrayList2、在程序中动态生成控件 
  • 一个VB动态数组例子,输入需要生成的数组大小,自动生成数组,挺简单,还不能应用于实践,仅供参考。
  • 声明固定大小的数组 有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围: 建立公用数组,在模块的声明段用 Public 语句声明数组。 建立模块级数组,在模块的声明段用 Private 语句声明...
  • 我们都知道在全部程序设计语言中数组都是一个非常重要的概念,数组的作用是同意程序猿用同...本文主要介绍VB.NET数组的使用,希望对大家的使用带来帮助。 数组中的第一个元素的下标称为下界,最后一个元素的下标称...
  • VB中如何判断数组为空数组

    万次阅读 2008-12-14 16:43:00
    是否有办法在使用一个动态数组之前,先看看它是否初始化了呢?试了isempty, isnull, is nothing都不管用。如果不想在使用之前ReDim arr(0),那就只能用错误处理,在出错误的时候做处理并resume next。暂时没有更好...
  • VB中,MSHFEXGRID不支持文本框,为了解决这个问题,一般的方法就是通过一个文本框的显示和隐藏,并获得表格单元的坐标,来实现向MSHFLEXGRID中录入数据的,具体方法我记得在本博中有,就不说了,自己搜一下 今天要说的是...
  • VB.net 如何确定 动态数组 是否已经初始化。
  • VB.NET中动态添加控件数组

    千次阅读 2006-10-25 16:18:00
    VB.NET的控件数组? 项目的需求又变了,我必须要在我的窗口上根据读取的文件不同添加不同的checkbox,我本以为vb.net和vb一样一定会有控件数组呢,结果网上的高手们都说vb.net是没有控件数组这个概念的。不过可以...
  • (由于用得不是很多,所以干脆记下来免得下次用到...被赋值数组需要是动态数组".对于类型,源数组与目标数组需要一致,即使是自定义类型也可以.以下说明一下可以赋值的情况:[codes=vb] Private Type MyType kk(10...
  • VB 清除数组中全部元素的值

    千次阅读 2019-06-12 11:41:58
    重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。 语法 Erase arraylist 所需的 arraylist 参数是一个或多个用逗号隔开的需要清除的数组变量。 说明 Erase 根据是固定大小(常规的)数组还是动态数组...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 214
精华内容 85
关键字:

vb中动态数组