【发布时间】:2017-01-01 19:26:38
【问题描述】:
你能推荐我一个很好的替代 VBA 中引用或指针类型的方法吗?我一直在为这样的表达而苦苦挣扎:
dblMyArray( i * lngDimension0 + j * lngDimension1 + k * lngDimension2, l * lngDimension3 + m * lngDimension4 ) = dblMyArray( i * lngDimension0 + j * lngDimension1 + k * lngDimension2, l * lngDimension3 + m * lngDimension4 ) + 1
如果我想在多维数组中累积值,例如C++,我可以这样写:
double& rElement = dblMyArray[ i * lngDimension0 + j * lngDimension1 + k * lngDimension2 ][ l * lngDimension3 + m * lngDimension4 ];
rElement += 1;
或
double* pElement = &dblMyArray[ i * lngDimension0 + j * lngDimension1 + k * lngDimension2 ][ l * lngDimension3 + m * lngDimension4 ];
*pElement += 1;
我正在寻找这样的东西。
我不想重复赋值右侧的元素,也不想调用带有 ByRef 参数的函数,因为这会使代码的维护变得更加困难。
有什么想法吗?
【问题讨论】:
-
为什么首先要在 VBA 中使用类似指针的行为?有什么优势吗?
-
既然VBA直接支持多维数组,为什么要用指针来模拟呢?
-
那么答案是:不,没有。
-
VBA 是一种有点冗长的编程语言,它确实缺少指针。如果你经常做这种事情并且它困扰你,你可以将数组迭代抽象为一个子,比如(
Increment(A,i)它将i添加到数组A的每个元素)。它需要是一个ByRef子,但ByRef是VBA 中的默认。如果Increment中的数组参数声明为Variant类型(与VBA 接近指针一样接近),则应该没有太大问题。 -
如果您将变量包含在一个类中并手动调整该类,您可以拥有一个模仿基本类型行为的类,并且您应该能够
Set对它的引用。
标签: excel vba ms-access ms-word powerpoint