'copymemory可以实现不同维数数组间的转换,如:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)Dim a(5, 7) As Byte, b(15, 2) As Byte, c(47) As Byte, d(2, 3, 3) As Byte '定义48个元素的四个数组用于测试
Sub xxxx()
Dim i As Integer, j As Integer, k As Integer For i = 0 To 5 '随机定义数组a
For j = 0 To 7
a(i, j) = Int(Rnd * 128)
Next
Next Debug.Print "array a():" '数组a( 6 行8 列)
For i = 0 To 5
For j = 0 To 7
Debug.Print Right(Space(5) & a(i, j), 5);
Next
Debug.Print
Next
Debug.Print Debug.Print "array b():" '数组b( 16 行 3 列)
CopyMemory b(0, 0), a(0, 0), 48
For i = 0 To 15
For j = 0 To 2
Debug.Print Right(Space(5) & b(i, j), 5);
Next
Debug.Print
Next
Debug.Print
Debug.Print "array c():" '数组c( 48 行 1 列)
CopyMemory c(0), b(0, 0), 48
For i = 0 To 47
Debug.Print Right(Space(5) & c(i), 5)
Next
Debug.Print Debug.Print "array d():" '数组d( 3 行 4 列 4 层)
CopyMemory d(0, 0, 0), c(0), 48
For i = 0 To 2
For j = 0 To 3
For k = 0 To 3
Debug.Print Right(Space(5) & d(i, j, k), 5);
Next
Debug.Print
Next
Debug.Print "---------------------------"
Next
End Sub
返回:
array a():311257 49 46 62 19 60
32 80 69 20120 83 64 49
13100 58 96 761062 26
9 13 42 160 68 84 69
105 10 24 86 58 45 19 90
118 67 11 96 51 59 62 26 array b():
31 24106
32 11 68
13 49 45
9 20 59
105 96 19
118 16 64
125 862
80 96 84
100 46 19
13120 62
10 76 60
670 49
7 58 26
69 51 69
58 62 90
42 83 26 array c():
31
32
13
9
105
118
125
80
100
13
10
67
7
69
58
42
24
11
49
20
96
16
86
96
46
120
76
0
58
51
62
83
106
68
45
59
19
64
2
84
19
62
60
49
26
69
90
26 array d():
317 46 19
9 420 84
125 49 62 60
13 16 68 69
---------------------------
32 69120 64
105 24 58 19
80 20 83 49
10 86 45 90
---------------------------
13 58 762
118 11 51 62
100 96106 26
67 96 59 26
---------------------------
本文介绍了一种使用VBA中的CopyMemory过程进行不同维度数组间数据转换的方法,并通过实例展示了如何将不同形状的数组(如二维到一维、再到三维)进行相互转换。
2967

被折叠的 条评论
为什么被折叠?



