Arrays Excel VBA数组值未存储到变量
我是Excel VBA新手。我可以做基本的编码,这是我最需要的。但最近我被以下问题困扰了 我已经定义了一个数组并成功地填充了它Arrays Excel VBA数组值未存储到变量,arrays,excel,vba,Arrays,Excel,Vba,我是Excel VBA新手。我可以做基本的编码,这是我最需要的。但最近我被以下问题困扰了 我已经定义了一个数组并成功地填充了它 Dim WS1(89, 17) As Variant 接下来,我想从数组的pat中获取最小值,我已经使用了以下方法 MoC = 100 For n = 0 To 89 For m = 7 To 14 If WS1(n, m) < MoC Then MoC = WS1(n, m) Next m Next n MoC=100 对于
Dim WS1(89, 17) As Variant
接下来,我想从数组的pat中获取最小值,我已经使用了以下方法
MoC = 100
For n = 0 To 89
For m = 7 To 14
If WS1(n, m) < MoC Then MoC = WS1(n, m)
Next m
Next n
MoC=100
对于n=0到89
对于m=7到14
如果WS1(n,m)
MoC
返回“0”,但当我使用(CTRL+F8)
同步调试时,我可以看到循环后WS1(n,m)
的最后一个值包含不同的值。我很难理解为什么我不能将数组值存储到MoC
(它被定义为“Double
”,我也尝试过“Variant
”)。我没有收到任何错误,只是一个“0”值
任何帮助都将不胜感激。您真的需要查看您正在填充的WS1以进行检查。数组中的某个位置是否有
0
?您的代码没有得到最后一个值-它得到的是数组中某些部分的最低值(您只检查第二维度的7
到14
。当我以1作为最低值运行您的代码时,MoC
返回正确的1。当我将-200
粘贴在数组位置0,8
时,它正确返回-200。我还没有完全理解这个问题。请您将数据发布到rWS1
?您编写的代码基本上是给定数组的MIN
函数,并且MoC
将(在末尾)保留该数组中最小的可用值。因此,如果最小值是0
,那么MoC
最后是0
就不足为奇了。不过,请注意两件事:(1)变量数组会自动为每个项进行调整。因此,此数组可能包含字符串、整数和双精度。如果任何项存储为字符串,则Val()
对于该项目将是0
@user1274820非常感谢您的回复和努力,数组不包含任何“0”值,我可以确认。但是,正如拉尔夫提到的,有字符串项目,我将MoC类型更改为Double,并对其进行排序!@拉尔夫非常感谢您的回复和建议。对于上述评论的回复,t他的问题是带有字符串数据的变量类型。感谢您的指出,我通过更改MoC类型解决了这个问题。