首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA阵列(3d)新手

Excel VBA阵列(3d)新手
EN

Stack Overflow用户
提问于 2014-10-28 11:46:18
回答 2查看 94关注 0票数 0

我试图填充一个3d数组,(此时)只需在msgbox中返回它,数组中我想要的数据在第9、15和16列中,类似于.

2342341234,01/1969,18:00

我一直得到一个类型错配,无法理解为什么,请帮助,如果你可以,所有的建议欢迎,因为我是一个新手在这个东西

代码语言:javascript
复制
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

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-28 12:07:26

这并不是关于如何创建和填充这些值的3D数组的完整讨论,而只是指出了您所呈现的代码中的错误所在,它只是创建了一行代码。

我怀疑您的错误出现在Global或Dim MonthArray语句中。在VBA中,数组没有“命名”参数。如果这是问题所在,您可以尝试如下:

代码语言:javascript
复制
Global MonthArray(0 to 2) as Variant

然后,在你的代码中:

代码语言:javascript
复制
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中的数据。例:

代码语言:javascript
复制
MsgBox MonthArray(0) & ", " &  MonthArray(1) & "m " & MonthArray(2)
票数 0
EN

Stack Overflow用户

发布于 2014-10-28 12:35:54

谢谢你,罗恩,我不能告诉你,我花了多长时间才能在不羞辱自己的情况下完成这项工作。如果可以的话我会投这个票的..。在您的笔记中,工作代码如下

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26607547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档