我试图填充一个3d数组,(此时)只需在msgbox中返回它,数组中我想要的数据在第9、15和16列中,类似于.
2342341234,01/1969,18:00
我一直得到一个类型错配,无法理解为什么,请帮助,如果你可以,所有的建议欢迎,因为我是一个新手在这个东西
Option Explicit
Global NumberOfRows As Integer
Global FirstRowOfData As Integer
Global LastRowOfData As Integer
Global i As Integer 'row loop
Global HospNo() As Integer
Global TRCDate() As Date
Global TRCTime() As Date
Global MonthArray(HospNo, TRCDate, TRCTime)
Sub CreateMonthArray()
FirstRowOfData = 1
With ActiveSheet
LastRowOfData = Range(.Range("A1"), .Range("A65535").End(xlUp)).Count
End With
Dim MonthArray(HospNo, TRCDate, TRCTime)
For i = FirstRowOfData To NumberOfRows
Let MonthArray(HospNo) = (ActiveSheet.Cells(i + 1, 9).value)
Let MonthArray(TRCDate) = (ActiveSheet.Cells(i + 1, 15).value)
Let MonthArray(TRCTime) = (ActiveSheet.Cells(i + 1, 16).value)
MsgBox MonthArray(HospNo(i), TRCDate(i), TRCTime(i))
Next i
End Sub非常感谢。
发布于 2014-10-28 12:07:26
这并不是关于如何创建和填充这些值的3D数组的完整讨论,而只是指出了您所呈现的代码中的错误所在,它只是创建了一行代码。
我怀疑您的错误出现在Global或Dim MonthArray语句中。在VBA中,数组没有“命名”参数。如果这是问题所在,您可以尝试如下:
Global MonthArray(0 to 2) as Variant然后,在你的代码中:
MonthArray(0) = (ActiveSheet.Cells(i + 1, 9).value)
MonthArray(1) = (ActiveSheet.Cells(i + 1, 15).value)
MonthArray(2) = (ActiveSheet.Cells(i + 1, 16).value)如果您想使用命名参数(这对于调试非常方便),您可能应该定义一个Class对象。
在VBA中,我通常使用Public而不是Global;您应该在代码正文中消除MonthArray的重复声明。而且,Let语句是可选的。
还需要确保将NumberOfRows变量设置为某个值。它没有设置为该模块中的任何内容,但是,由于它是一个公共变量,所以您可能会在其他地方设置它。
最后,您的MsgBox语句应该通过索引号访问MonthArray中的数据。例:
MsgBox MonthArray(0) & ", " & MonthArray(1) & "m " & MonthArray(2)发布于 2014-10-28 12:35:54
谢谢你,罗恩,我不能告诉你,我花了多长时间才能在不羞辱自己的情况下完成这项工作。如果可以的话我会投这个票的..。在您的笔记中,工作代码如下
Option Explicit
Public NumberOfRows As Integer
Public FirstRowOfData As Integer
Public LastRowOfData As Integer
Public i As Integer 'row loop
'Public HospNo() As Integer
'Public TRCDate() As Date
'Public TRCTime() As Date
Public MonthArray(0 To 2) As Variant
Sub CreateMonthArray()
FirstRowOfData = 1
With ActiveSheet
LastRowOfData = Range(.Range("A1"), .Range("A65535").End(xlUp)).Count
End With
'Dim MonthArray(HospNo, TRCDate, TRCTime)
For i = FirstRowOfData To LastRowOfData
MonthArray(0) = (ActiveSheet.Cells(i + 1, 9).value)
MonthArray(1) = (ActiveSheet.Cells(i + 1, 15).value)
MonthArray(2) = (ActiveSheet.Cells(i + 1, 16).value)
MsgBox MonthArray(0) & ", " & MonthArray(1) & ", " & MonthArray(2)
Next i
End Subhttps://stackoverflow.com/questions/26607547
复制相似问题