当我试图在我的“班次”类中创建一个新成员时,我遇到了一个错误。该子项用于填充以下变量(在类的顶部声明):
Private ShiftMembers() As String
Private ShiftCallSigns() As String
Private ShiftAssignments() As String
Private ShiftStatuses() As String
Public Sub AddMember(ByVal Name As String, ByVal CallSign As String, ByVal Assignment As String, Optional B
因此,我有一个数据结构的东西是相当开放的,以存储的数据量结束。数据通过一系列结构存储。下面是我使用的结构和变量:
Dim CurrentRec As Year
Structure Year
Dim Months() As Month
End Structure
Structure Month
Dim Dayz() As Days
Dim MiscExpend(,) As String
End Structure
Structure Days
Dim Incomes(,) As String
Dim Expenditures(,) As String
我在Excel中创建一个二维动态数组。我可以找到的大多数代码示例如下所示:
Dim companyArray() As Variant
Dim height, width As Integer
width = 2
height = WorksheetFunction.CountA(Worksheets(1).Columns(1))
ReDim companyArray(height, width)
在获得了height变量的值之后,我不想声明数组,这有什么原因吗?如果可能的话,我不想避免使用ReDim吗?
好的,我在使用ReDim数组时遇到了问题;有人告诉我这就是解决这个问题的方法。我只是不确定应该把它放在哪里,或者必须添加到函数的第一个Integer ((n,n))中。仅供参考,"Dim PropArray(0,5) As String“位于代码的最顶部,其中"Option Compare Database”是。
Dim PropArray(0, 5) As String
Public Function ShowBeam()
For Each ctl In [Forms]![frmShelfBuilder]
If Left(ctl.Name, 3) = "B
我想要定义一个数组变量,根据搜索返回的结果的m个,有一个可变的元素数。我在以下方面得到一个错误“常量表达式必需”:
Dim cmodels(0 To m) As String
这是我的完整代码
Dim foundRange As Range
Dim rangeToSearch As Range
Set rangeToSearch = Selection
Set foundRange = rangeToSearch.Find(What:="Lights", After:=ActiveCell,
LookIn:=xlValues, LookAt:= _
xl
索引超出了数组的界限。
每次我尝试记录数据,例如,两个农场和一个公牛,我会得到这个错误.我认为这可能与ReDim有关。
每当有更多的农场,那么就有公牛,我有这个错误.然而,如果它是一个农场,它可以带走同样多的公牛。
Private Farm() As FarmInfo
Private Farms, Bulls, Weekends As Integer
Private Structure FarmInfo
Public FarmName As String
Public FarmSize As Double
Public
我正在处理一个VB Windows窗体,这里我有一个关于初始化数组(友元变量)的问题。
我有一个BookInfo类,如下所示:
Public Class BookInfoForm
Friend _books() As BookInfo
...
EndClass
在我的主表单中,我希望将这个_books数组初始化为大小为4。
我尝试过的是:
_bookInfoForm._books(4) = New BookInfo
但是这没有起作用,它抛出了一个异常
Object reference not set to an instance of an object.
我想知道如何才能将数组初始化
我正在尝试创建一个动态数组,在循环中添加单元。每次尝试redim并添加一个单元时,我都会得到以下错误:
下标超出范围
我的代码:
dim arr()
strSql = "SELECT item from dupEmail"
Set rs = CurrentDb.OpenRecordset(strSql)
rs.MoveFirst
ReDim arr(0)
Do While Not rs.EOF
arr(UBound(arr, 1)) = rs.Fields(0)
ReDim Preserve arr(1, UBou
这里是新的,一般的VBA和编程都是新的。
我正在尝试重用多个数组(通过一个循环),但我假设在重用它们之前我需要清除它们?我试着搜索这些问题,但我找不到解决办法,或者坦率地说,如果它们有效的话,我就无法理解这些解决方案。
Dim WS As Worksheet
For Each WS In Worksheets
If Right(WS.Name, 4) = "Data" Then Comp = Comp + 1
Next WS
Dim CompArray(10, 50) As Variant
Dim RatesArray(10, 1 To 50) As Variant
Dim n As Integers
Public AAA() As Integer
Public QQQ() As String
Sub Initialise()
n = 0
End Sub
Sub WrongAnswer(oShape As Shape)
A = oShape.TextEffect.Text
SendWrongAnswer
End Sub
Sub SendWrongAnswer()
ReDim QQQ(500)
QQQ(n) = Q
ReDim AAA(500)
AAA(n) = A
n = (n) + 1
End Sub
当我制作数组AAA()和QQQ()并将数据
我正在尝试将一个值添加到一个动态数组中,但是一直得到一个运行时错误。我找到了一些不同的来源,说这应该是答案,所以我不知道我做错了什么……
Sub addtoarray()
Dim catSheets() As String
ReDim Preserve catSheets(UBound(catSheets) + 1)
catSheets(UBound(catSheets)) = "Chemicals"
End Sub
我有一个三维数组。我想从Excel中的几个模块访问这个数组。出于这个原因,我使用Public来声明它。目前,我使用以下代码:
Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double
我希望在启动代码时,根据数据的大小,在一定值下初始化第一个和第三个变量。
由于ReDim只能用于数组中的最后一个变量,所以我尝试这样做,尽管这是不可能的:
If x < 400 and z < 3000 Then
Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double
End If
我有这样的密码。
Dim sums() As Single
dim n as integer
For n = 0 To ActiveCell.Value - 2
sums(n) = Abs(Application.WorksheetFunction.SumIf(Range(Cells(i + m, 6), Cells(j - 1, 6)), Range("F" & i + m).Value, Range(Cells(i + m, 17), Cells(j - 1, 17))))
Next n
我收到了sums(n)= ....的错误消息,我想按照公式填充数组中的
我真的很感谢在这件事上能得到的任何帮助。
我试图遍历一个列,寻找重复的名称,然后从同一行中获取该列和其他几个数据,并将它们放入一个二维数组中,我想使用另一个函数,但它不起作用。
我真的需要你的帮助来弄清楚为什么我不能在不保留数据的情况下重定向这个数组。
Dim oRange As Range, aCell As Range, bCell As Range
Dim ws As Worksheet
Dim SearchString As String, FoundAt As String
Dim tArray() As Variant
Dim iR As Long
Dim LastRow As L
我不知道如何创建一个动态多维数组。目前,我已经将我的数组声明为Dim fArr(0 To 4, 0 To 9)。它在一个维度中总是(0到4),而其他维度(0-9)总是可变的,那么我该如何做呢?
我像下面的例子一样填充数组
Select Case fTyp
Case Is = "A"
fArr(0, aRow) = j
Case Is = "B"
fArr(1, aRow) = j
Case Is = "C"
我想做什么
我想要一个循环,如果它不适合他的存储位置的产品存储位置移除。在这个循环中,我希望将artikelDetail_ID保存在数组中。循环结束后,我希望能够看到所有在循环期间被删除并放入数组中的artikelDetail_ID。
当代码运行时,它将删除6条记录。
我的解决方案
Dim verwijderdeID() As Variant
Dim lengte As Integer
lengte = 0
With recordset_opslag_detail_info
Do Until recordset_opslag_detail_info.EOF
If (hu
我在VBA中有一个2D数组(Excel 365)。
它给了我一个错误消息Subscript out of Range
代码在ReDim行处停止。
ReDim arrs(1 To 1, 1 to 6) As Variant
For idx = 1 To lr
If staff_group(idx) = "" Then Exit For
If InStr(LCase(staff_group(idx)), "al - ") Then
arrs(UBound(arrs,1), 1) = sg(idx)
这是代码:
'creates the msxml object
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
Dim retVal
'load the xml data of the script
retVal=xmlDoc.load(argFilePath)
Dim fso, folder, sFolder
Dim xmlDataPath, curNode
'get input folder
Set curNode=xmlDoc.selectSingleNode("//Script
我希望能够初始化一个数组来存储转换的值。但是直到编译时我才知道有多少值,所以我希望范围从
伪代码:
1 to <some expression>
也就是说,我希望它是
Dim Colvals(1 To Len(EndColumn)) As Integer
但是当发送代码进行编译时,它会抛出
Constant Expression required
你知道怎么做吗?我真的不想通过强制指定范围来限制程序的多功能性。
我得到的错误是:
类别:Microsoft VBScript运行时描述:下标超出范围线:46
来自以下代码:
<%
''*************************************************************************
''Created Date: 10/28/13
''Created By: NG
''Description: Test page for new highcharts charts replacing ChartFX for business
我循环遍历一个命名范围,并根据单元格是否为空来追加一个数组。我不太熟悉VBA中的数组,所以我的逻辑可能是不正确的。代码一直覆盖数组中的第一个元素,并且它永远不会递增。我不确定为什么在一个元素被分配到第一个索引后,UBound(myArray)总是保持在0。
我的代码看起来像这样:
Dim myArray() As Double
ReDim Preserve myArray(0)
For Each cell In [myRange]
If cell <> "" Then
If UBound(myArray) >
我收到一个"Object reference not set to a instance of an object“。尝试填充fileDetails数组时出错。我是vb.net的新手,我迷路了。
Public Sub FindAllOrphanFiles(ByVal targetDirectory As String)
Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
' Process the list of files found in the directory.
假设我有这样的代码:
Dim resultArray() As Double
ReDim resultArray(1 to 10) As Double
Dim i As Integer
For i = 1 to 10
resultArray(i) = i
Next
ReDim resultArray(1 to 20) As Double
For i = 11 To 20
resultArray(i) = i
Next
这样的代码可能吗?第一个周期的值会保留在数组中吗?
我不知道数组的长度。20只是一个数字,直到节目结束我才知道。
相关代码如下。基本上,我将工作表设置为工作簿中的工作表。在with块中,我调用BuildProgressionArrays函数。当我试图设置searchRange时,我会得到一个无效的或不限定的引用错误。如果我添加另一组工作表并使用块,则该函数可以正常工作。为什么当我调用函数时,它会丢失集合工作表?
Set Worksheet = ThisWorkbook.Sheets("progression")
totalResourcesStored = 1200
With Worksheet
For i = 1 To 10
thi
不知何故,我可以通过在全新工作簿的IDE中输入以下内容来使Excel 2010崩溃:
private sub foo
redim v(,1 to 3)
好吧,你不太可能会打字...但实际情况是这样的:
private sub foo
dim v(1 to N, 1 to M)
...
M = New_Value
redim preserve v(,1 to M) ' seemed reasonable ... then CRASH !!!
有趣的是,VBA要求您显式地使用2D redim保留项的第一个参数(因为您不允许更改第一个维度)。但是,当
这真的很烦人。下面是一个包含在自定义数据库类中的方法。我将数据查询到记录集中,然后尝试将这些数据转换为数组w/o字段名。它似乎在函数中工作,因为我设置了一个response.write来检查是否有任何值。但是一旦退出这个函数,事情就会变得混乱(数组不一样)。
Public Function To2Array()
dim A, x, columns
columns = Rs.Fields.Count
Rs.MoveFirst()
x = 0
do until Rs.EOF
Redim A(x+1,columns)
for y
我已经玩了几个小时了,还没有找到解决方案。
当我用下面的方法创建数组时,它会毫无困难地输出到一个范围内:
Dim Destination As Range
Set Destination = NewSheet.Range("A1")
ReDim OutArray(1 To 1, 1 To NumArrayCols) As Variant
OutArray(1, 1) = "hello"
Destination.Resize(UBound(OutArray, 1), UBound(OutArray, 2)).Value = OutArray
但是,当我以下面的方
我的代码的想法是,我希望将行号存储在一个数组中,其中是文本"AnchorPointStartDontDelete"
代码
Set rightRng = Range(Cells(8, 10), Cells(ER.row - 1, 10))
Dim arr() As Long
ReDim arr(1 To 1) As Long
For Each rng In rightRng
If rng.value = "AnchorPointStartDontDelete" Then
ReDim Preserve arr(1 To UBound(arr
我需要一些代码方面的帮助。这是我的代码:
Public Function ReadBinaryFileLarge(strFilename As String) As Byte()
Dim position As Integer = 0
Dim bufferSize As Integer = 4096
Dim bytes() As Byte
Using fsOpen As FileStream = New FileStream(strFilename, FileMode.Open)
ReDim bytes((fsOpen.Length)
如果将数组设置为动态数组,则会得到一个subscript out of range错误。如果将其设置为静态,则会得到一个array already dimentioned错误。我遗漏了什么?
Dim arrTrips() As String 'dynamic
Dim arrTrips(1 To 99) As String 'static
...
For i = 2 To lastrow
If .Cells(i, "C").Value2 = Target.Value2 Then
ReDim Preserve arrTrips(UBound(
这是我的代码:
Open "Data.txt" For Input As #1
N = 1
While Not EOF(1)
ReDim DataName(N)
ReDim Data(N, Max_Time_Point)
ReDim line(N)
Input #1, line(N)
DataName(N) = Split(line(N))(0)
For j = 1 To Max_Time_Point
Data(N, j) = Split(line(N))(j)
Debug.Print "data", N,
我在EXCEL VBA中有一个数组数组(不是二维数组),我需要向内部数组添加元素。例如: Option Explicit
Sub ArrayofArrays()
Dim OuterArray() As Variant
ReDim OuterArray(0 To 0)
Dim InnerArray() As Variant
ReDim InnerArray(0 To 0)
InnerArray(0) = "Foo"
OuterArray(0) = InnerArray
ReDim Preserve OuterArray(LBound(OuterArray) To UB
我正在尝试查找从特定电子邮件地址发送的电子邮件,然后,在每天09:00到11:00:00之间,将来自此特定电子邮件地址的所有电子邮件转发到另一个电子邮件地址。
我得到了以下错误。
Sub Search_Inbox()
Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myitems As Outlook.Items
Dim myitem As Object
D
在VBA中,我在名为Unlock的函数中将值存储到名为PidArr的动态数组中。数组开始如下所示:
Dim PidArr() As String
ReDim PidArr(1 To 2)
插入的数据如下所示:
...within a loop
PidArr(Count) = LineStr 'this is a string containing the data.
Logging "Inserted " & PidArr(Count) 'this correctly shows the data has in
我有一个这样的循环,但是一旦循环退出,每个索引的值就会发生变化。
预期输入:(“测试测试”,“测试”)
预期产出:{1,6,14}
Function charIndexes(Optional ByVal inputStr As String = "test testing testicle", Optional searchStr As String = "test") As Variant
Dim cI() As Integer
Dim matchCnt As Integer
matchCnt = 0
pos = 1
在下面的代码中,VBA告诉我boundary必须是Dim vals(1 To boundary) As Variant行上的常量。这是我第一次看到这个。这是怎么回事?
Dim boundary As Integer
boundary = distrib.Count
Dim vals(1 To boundary) As Variant
For i = 1 To boundary
vals(i) = distrib(i, 3) + distrib(i, 4)
Next i
distrib是声明为变量的数组