作者lunsun (运气可以不要用完吗)
看板Visual_Basic
标题[VBA ] 固定或静态资料不能大於64K
时间Mon Jan 18 15:31:15 2021
想请问各位大大一下,
在定义Type的时候遇到固定或静态资料不能大於64K的问题,
以下程式码的预设矩阵大小为
wDay(31) 想改到366
Task(10) 想改到30
Project(17) 想改到50
基本上用预设的都会过,但大一点就会遇到64K的问题.
有去网路上找解法,大部分都是建议先不设再用Redim,
但试了很久,不知道是语法错误还是怎样,试了很久都不会过.
以下是我的写法
Dim Tester As Employee
ReDim Tester.Project(50).Task(30).EffortByDate.wDay(366)
这样子写这行会出现阵列超出范围的错误
如果只写
ReDim Tester.Project(50)
这样子这一行会过,
但下面有用到Tester.Project(0).Task(0).TaskName的那行反而出现超出范围错误
如果写
ReDim Tester.Project(50)
ReDim Tester.Project(50).Task(30)
这样子这两行会过,但结果和上面一样
下面有用到Tester.Project(0).Task(0).TaskName的那行反而出现超出范围错误
搞了很久都搞不定,
以下是我Type的定义,可否请各位大大帮忙看一下问题在哪边
感谢帮忙!
Public Type wRecord
wYear As Integer
wMonth As Integer
wDay() As String
wStatus As String
End Type
Public Type Work
TaskName As String
TaskStatus As String
EffortByDate As wRecord
End Type
Public Type wHandle
ProjectNumber As String
ProjectStatus As String
Model As String
Customer As String
Catogory As String
Task() As Work
End Type
Public Type Employee
Name As String
Project() As wHandle
End Type
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.146.24.242 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1610955082.A.B69.html
1F:推 waiter337: 用另一个阵列辅助 马总统说过 一个不够可以吃两个! 02/16 03:01
2F:推 waiter337: redim 只适用於一开始就直接变更 02/16 03:03
3F:→ waiter337: 之後变更只会更慢 02/16 03:04
4F:→ waiter337: 就算redim 上限也是64k 02/16 03:04
5F:→ waiter337: 要怎麽切 就要看个人判断了 02/16 03:07
6F:→ waiter337: 关於阵列上限 刚测过了一下 02/16 03:15
7F:→ waiter337: 我的记忆体64m ReDim Tester(178599999) 02/16 03:15
8F:→ waiter337: 还能跑得动 02/16 03:15
9F:→ waiter337: 如果上道178999999就记忆体不足 02/16 03:16
10F:推 waiter337: 目前你的需求要568646 02/16 03:27
11F:→ waiter337: 另外一台16G的电脑133843499 02/16 03:33
12F:→ waiter337: 顺便更正一下 我64G的电脑 空闲记忆体只有50G 02/16 03:34
13F:→ waiter337: 16G的电脑空闲记忆体只有12.6G 02/16 03:35
14F:推 waiter337: 通常建议直接dim完下一行就接着redim 你的预估大小 04/05 03:29