精华内容
下载资源
问答
  • 时 间:2019-05-18 23:04:49作 者:摘 要:你已经知道了如何有规划地产生一个清单(一维数组),是时候仔细看一下如何使用数据表了。下面的过程产生一个二维数组,储存国家名称,货币名称和交换汇率。正 文:源码:Sub...

    时 间:2019-05-18 23:04:49

    作 者:摘 要:你已经知道了如何有规划地产生一个清单(一维数组),是时候仔细看一下如何使用数据表了。下面的过程产生一个二维数组,储存国家名称,货币名称和交换汇率。

    正 文:

    源码:

    Sub Exchange()

    Dim t As String

    Dim r As String

    Dim Ex(3, 3) As Variant

    t = Chr(9)    'tab

    r = Chr(13)    'Enter

    Ex(1, 1) = "Japan"

    Ex(1, 2) = "Yen"

    Ex(1, 3) = 128.2

    Ex(2, 1) = "Mexico"

    Ex(2, 2) = "Peso"

    Ex(2, 3) = 9.423

    Ex(3, 1) = "Canada"

    Ex(3, 2) = "Dollar"

    Ex(3, 3) = 1.567

    MsgBox "Country " & t & t & "Currency" & t & "per US$" _

    & r & r _

    & Ex(1, 1) & t & t & Ex(1, 2) & t & Ex(1, 3) & r _

    & Ex(2, 1) & t & t & Ex(2, 2) & t & Ex(2, 3) & r _

    & Ex(3, 1) & t & t & Ex(3, 2) & t & Ex(3, 3), , _

    "Exchange"

    End Sub

    当你运行过程Exchange时,你将看到一个信息框,显示三列信息

    Access软件网QQ交流群(群号:39785885)

    Access源码网店

    展开全文
  • 如何将数组初始化为全0?

    万次阅读 2018-02-13 18:15:58
    如何将数组初始化为全0? C语言中,声明数组的语句: int arr[100]; 这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾。有许多情况我们要将数组初始化为全零的情况才能...

    如何将数组初始化为全0?

    C语言中,声明数组的语句:

    int arr[100];

    这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾。有许多情况我们要将数组初始化为全零的情况才能进行其他操作。

    最简单的方法就是用一个循环吧数组所有元素设置为0:

    int arr[100];
    int i = 0;
    for(i = 0 ; i < 100 ; i++)
        arr[i] = 0;  //This will make all ZERO

    我们还可以利用其他几种方式做到初始化数组为0:

    1、全局变量和静态变量初始化时会自动被设置为0。如果们声明全局变量,那么他在运行前会变成全0。

    int arr[1024]; // This is global
    int main(void)
    {
        //statements
    }

    2、对于局部数组我们还有简写的初始化语法。如果一个数组被部分初始化,没有被初始化的元素会被自动设置为相应类型的0。这是编译器自动完成的。可以这样写:

    int main(void)
    {
        int arr[1024] = {0};  // This will make all ZERO
        // statements
    }

    3、你还可以用memset函数在程序开始时初始化数组。这条命令这在你已经修改了数组之后又想将它重置为全0特别有用。

    int arr[1024];
    arr[5] = 67;
    memset(ZEROARRAY, 0, 1024); //This will reinitialize all to ZERO
    展开全文
  • In Excel via Visual Basic, I am iterating through a CSV file of invoices that is loaded into Excel. The invoices are in a determinable pattern by client.I am reading them into a dynamic 2D array, then...

    In Excel via Visual Basic, I am iterating through a CSV file of invoices that is loaded into Excel. The invoices are in a determinable pattern by client.

    I am reading them into a dynamic 2D array, then writing them to another worksheet with older invoices. I understand that I have to reverse rows and columns since only the last dimension of an array may be Redimmed, then transpose when I write it to the master worksheet.

    Somewhere, I have the syntax wrong. It keeps telling me that I have already Dimensionalized the array. Somehow did I create it as a static array? What do I need to fix in order to let it operate dynamically?

    WORKING CODE PER ANSWER GIVEN

    Sub InvoicesUpdate()

    '

    'Application Settings

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    Application.Calculation = xlCalculationManual

    'Instantiate control variables

    Dim allRows As Long, currentOffset As Long, invoiceActive As Boolean, mAllRows As Long

    Dim iAllRows As Long, unusedRow As Long, row As Long, mWSExists As Boolean, newmAllRows As Long

    'Instantiate invoice variables

    Dim accountNum As String, custName As String, vinNum As String, caseNum As String, statusField As String

    Dim invDate As String, makeField As String, feeDesc As String, amountField As String, invNum As String

    'Instantiate Workbook variables

    Dim mWB As Workbook 'master

    Dim iWB As Workbook 'import

    'Instantiate Worksheet variables

    Dim mWS As Worksheet

    Dim iWS As Worksheet

    'Instantiate Range variables

    Dim iData As Range

    'Initialize variables

    invoiceActive = False

    row = 0

    'Open import workbook

    Workbooks.Open ("path:excel_invoices.csv")

    Set iWB = ActiveWorkbook

    Set iWS = iWB.Sheets("excel_invoices.csv")

    iWS.Activate

    Range("A1").Select

    iAllRows = iWS.UsedRange.Rows.Count 'Count rows of import data

    'Instantiate array, include extra column for client name

    Dim invoices()

    ReDim invoices(10, 0)

    'Loop through rows.

    Do

    'Check for the start of a client and store client name

    If ActiveCell.Value = "Account Number" Then

    clientName = ActiveCell.Offset(-1, 6).Value

    End If

    If ActiveCell.Offset(0, 3).Value <> Empty And ActiveCell.Value <> "Account Number" And ActiveCell.Offset(2, 0) = Empty Then

    invoiceActive = True

    'Populate account information.

    accountNum = ActiveCell.Offset(0, 0).Value

    vinNum = ActiveCell.Offset(0, 1).Value

    'leave out customer name for FDCPA reasons

    caseNum = ActiveCell.Offset(0, 3).Value

    statusField = ActiveCell.Offset(0, 4).Value

    invDate = ActiveCell.Offset(0, 5).Value

    makeField = ActiveCell.Offset(0, 6).Value

    End If

    If invoiceActive = True And ActiveCell.Value = Empty And ActiveCell.Offset(0, 6).Value = Empty And ActiveCell.Offset(0, 9).Value = Empty Then

    'Make sure something other than $0 was invoiced

    If ActiveCell.Offset(0, 8).Value <> 0 Then

    'Populate individual item values.

    feeDesc = ActiveCell.Offset(0, 7).Value

    amountField = ActiveCell.Offset(0, 8).Value

    invNum = ActiveCell.Offset(0, 10).Value

    'Transfer data to array

    invoices(0, row) = "=TODAY()"

    invoices(1, row) = accountNum

    invoices(2, row) = clientName

    invoices(3, row) = vinNum

    invoices(4, row) = caseNum

    invoices(5, row) = statusField

    invoices(6, row) = invDate

    invoices(7, row) = makeField

    invoices(8, row) = feeDesc

    invoices(9, row) = amountField

    invoices(10, row) = invNum

    'Increment row counter for array

    row = row + 1

    'Resize array for next entry

    ReDim Preserve invoices(10,row)

    End If

    End If

    'Find the end of an invoice

    If invoiceActive = True And ActiveCell.Offset(0, 9) <> Empty Then

    'Set the flag to outside of an invoice

    invoiceActive = False

    End If

    'Increment active cell to next cell down

    ActiveCell.Offset(1, 0).Activate

    'Define end of the loop at the last used row

    Loop Until ActiveCell.row = iAllRows

    'Close import data file

    iWB.Close

    解决方案

    This isn't exactly intuitive, but you cannot Redim(VB6 Ref) an array if you dimmed it with dimensions. Exact quote from linked page is:

    The ReDim statement is used to size or resize a dynamic array that has

    already been formally declared using a Private, Public, or Dim

    statement with empty parentheses (without dimension subscripts).

    In other words, instead of dim invoices(10,0)

    You should use

    Dim invoices()

    Redim invoices(10,0)

    Then when you ReDim, you'll need to use Redim Preserve (10,row)

    Warning: When Redimensioning multi-dimensional arrays, if you want to preserve your values, you can only increase the last dimension. I.E. Redim Preserve (11,row) or even (11,0) would fail.

    展开全文
  • VBA编程知识点(12)——工作表转二维数组提高效率学习自杨洋老师《全民一起VBA》在excel中读取单元格的操作是最耗时的操作之一,把表格数据转换为二维数据,能够大大提高程序运行速度。声明二维数组dim a(4,5),最大...

    VBA编程知识点(12)——工作表转二维数组提高效率

    学习自杨洋老师《全民一起VBA》

    在excel中读取单元格的操作是最耗时的操作之一,把表格数据转换为二维数据,能够大大提高程序运行速度。

    声明二维数组

    dim a(4,5),最大行号为4,最在列号为5,从0开始,共有5*6=30个数据。

    dim a(1 to 3,2 to 6),行号从1开始,列号从2开始,共有3*5=15个数据。

    声明二维动态数组,dim a(),与声明一维动态数组一样。

    工作表其实就是一个二维数组,行号与列号都从1开始,各元素的类型是range

    工作表转换为二维数组

    第一步声明一个动态数组,dim a()

    第二步为动态数组赋值,a = Range(“A1:E12”),现在动态数组重新定义成12行,5列的数组,每个元素都是range范围中对应的数据。

    注意:

    (1)此时,数组的下标默认从1开始。

    (2)用于从range读取内容的数组,必须声明为动态数组,而且必须是变体类型!即声明的数组范围与range范围大小一致,数组类型与range类型一致,也一样会出错。

    例dim a(5,6)、dim a() as long,这样的数组都不能成功执行a = Range(“XX:XX”)的操作。

    (3)即使range只有一行,动态数组仍然被定义为二维数组,而不是一维的。

    把数组写入工作表

    语句示例:Range(“A1:E12”) = a

    此时数组a可以是固定长度的数组,也可以是固定类型的数组,下标可以是任意范围,但要求是二维的。

    一个代码示例

    操作单元格一百万次,耗时30秒

    For i = 1 to 50000

    for i = 1 to 20

    Cells(i , j) = Cells(i , j) * 2

    Next j

    Next i

    所有运算在数组中运行,最后只操作一次单元格,耗时1秒。

    s = Range(“A1:T50000”) ‘s是一个二维动态数组

    For i = 1 to 50000

    for i = 1 to 20

    s(i , j) = s(i , j) * 2

    Next j

    Next i

    Range(“A1:T50000”) = s

    一维数组与range

    一维数组不能从range中读入数据,但可以写入到range(只能是某行或某列)中:

    (1)写入工作表某行:直接赋值给range的value属性。一维数组默认是一行的。例:Range(A1:F1) = a

    (2)写入工作表某列:先使用Transpose函数进行数组进行转置。例:Range(A1:A10) = Application.Transpose(a)

    展开全文
  • VBA可以定义多达60维的数组,但实际上很少使用三维以上的数组。本文主要讲解二维数组及其使用。声明二维数组与一维数组一样,使用Dim语句来声明二维数组。例如,语句Dim myArray(3,7) AsInteger声明了一个名为...
  • VBA 数组定义,赋值,一维数组

    万次阅读 2019-12-19 13:35:43
    1VBA数组的基础定义 1.1什么是数组? 就是一组数/字符等用同一个名字(这个名字就是:数组名),作为一个整体存储在一起 1.2什么是元素 这些被保存在同一个数组名下的,多个内容,称为element 元素 数组里的元素是...
  • 只是定义了数组,但由于把数组赋值时放到了if语句里,导致可能由于没有符合if语句的情况而没有给数组具体赋值,然后对数组进行其他操作(比如进行数组内数值排序)就会报错。 我想问下,怎么判断通过dim arr()...
  • 经过多次实验证明:VBA数组起始标只能以1开始,否则无法转置 二、列表设计思路 利用类模块,当成对象开发; 生成数组是二维数组,每个维度的长度都可以通过参数设置; 通过行标列表添加...
  • VBA数组赋值(1/2)-- 一维数组

    千次阅读 2020-04-04 02:15:16
    以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为一维数组赋值(或者说如何创建一维数组)。
  • 如何判断数组已经初始化

    千次阅读 2018-12-07 03:04:42
    VBA编程中经常用到数组,在代码中使用数组之前,需要确保数组已经完成初始化操作,借助API可以进行判断。 Private Declare Function SafeArrayGetDim Lib &amp;amp;quot;oleaut32.dll&amp;amp;quot; (ByRef ...
  • 重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。它的行为取决于数组的类型(见 1.3 )。 1.2 语法 Erase arraylist 所需的 arraylist 参数是一个或多个用逗号隔开的需要清除的数组变量。 1.3 ...
  • 数组必须定义大小后才可以使用? 如果是用for,一般需要知道循环次数,也就是单元格个数 如果用 for each ,while等,能吗?能 比如原始数据 ID 11 47 11 48 27 30 43 Sub get_arr() Dim arr1...
  • VBA二维数组怎么赋值?

    千次阅读 2020-12-22 18:26:51
    展开全部可通过 “ = ” ...在VBA中对变量进行赋值可通过 “ = ” 符号或 “ Set ” 关键字进行。通过 “ = ” 符号对变量赋值的语法格式有以下几种。变量名=数据变量1=变量2 运算符 数据变量1=变量2 运算符 变量3...
  • ![图片说明](https://img-ask.csdn.net/upload/201705/28/1495933094_506614.jpg) !... 如何把 数组 比如 如图1 序号这一列 有序的插入到 图2的 ordernum 表格里面 ,插入完的效果类似图2那样有序的排列
  • 字符数组初始化和'/0'

    千次阅读 2010-06-26 08:43:00
    字符数组可以在定义时进行初始化.有两种初始化方法. 方法1:逐个字符赋给数组中各元素.这种方法最容易理解.例如: char c[5]={ 'H','a','p','p','y' }; 把5个字符分别赋给c[0]至c[4].以下是几点...
  • VBA】全局数组定义

    千次阅读 2018-07-24 17:31:00
    【说明】 全局数组定义(写在Module的最上面) 'Array Public Arr_approver Public Arr_delegator Public Arr_Role 转载于:https://www.cnblogs.com/dlsunf/p/9361388.html
  • Excel VBA数组入门教程 1. 前言:不要把VBA数组想的太神秘,它其实就是一组数字而已。 2. 数组的维数: Sub 数组示例() Dim x As Long, y As Long Dim arr(1 To 10, 1 To 3) '创建一个可以容下10行3列的...
  • 如何判断数组是否已初始化,定义了维数  最近用Split("",",")函数,遇到如何简明判断数组是否初始化问题,找到了一些方法,只有方法一最简单,记之。 方法一:使用cstr(Join(list[, delimiter]))函数的...
  • Erase arr(清空VBA数组)

    千次阅读 2013-01-26 17:03:00
    '在循环中,如果需要清空VBA数组,可以用Erase方法来实现. '该示例使用 Erase 语句重新初始化固定大小的数组中的元素,以及释放动态数组存储空间。 Dim NumArray(10) As Integer ' Integer 数组。 Dim ...
  • 作者:奔跑的犀牛先生 ... 一 数组 array 1.1 数据定义 ... 动态数组:长度不定的数组,需要redim 数组 arr() 必须先声明后才可以使用! 1.2数组的index下标 (1)数组的index下标应该是从...
  • 1. 一维数组初始化,可以只给一部分元素赋值,如下 int a[10] = {0,1,2,3,4}; 这样只给前面的5个元素赋值,后5个元素为0。 将char p[8]; 看作是字符数组的话, charp[8]={0}; 表示第一个元素为0,后面的...
  • Dim a() As Byte If StrConv(a, vbUnicode) = "" Then  MsgBox "未初始化" Else  MsgBox "已经初始化" End If
  • 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 在编写的过程中有一个疑问一直解决不了,希望大佬可以帮我解答一下:在C语言中可不可以创建一个数组,...
  • VBA学习笔记之随机数&数组redim

    千次阅读 2019-09-26 00:36:27
    发现更简单的: a=Application.RandBetween(-10, 10) 直接生成-10到10之间的随机整数 关于二维数组Redim Preserve: ... 1 如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的...
  • excel vba真正的动态数组实例

    千次阅读 2014-02-11 10:22:20
    excel vba真正的动态数组实例。  一、动态数组的定义  动态数组的定义,一开始不需要给数组标明上界和下界。直接定义即可,如下面的代码:  Dim MyStr() As String  这样,就定义了一个动态数组及其名称:MyStr...
  • excel vba真正的动态数组实例 一、动态数组的定义  动态数组的定义,一开始不需要给数组标明上界和下界。直接定义即可,如下面的代码:  Dim MyStr() As String  这样,就定义了一个动态数组及其...
  • 动态初始化对象类型数组后对数组元素进行setter,getter出现空指针异常 对于下面代码 //动态定义Student类型数组,数组长度为3 Student[] stuArrays = new Student[3]; //遍历stuArrays数组,并赋值 for(Student s : ...
  • I am trying to practice with creating 2d array lists in VBA. I believe I am having a syntax issue. I am having trouble adding the y axis items into the rows. I get an error:'Invalid Procedure or argum...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,281
精华内容 512
关键字:

vba数组初始化