Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用count查找最小值,然后找出该计数是多少_Vba_Excel - Fatal编程技术网

Vba 使用count查找最小值,然后找出该计数是多少

Vba 使用count查找最小值,然后找出该计数是多少,vba,excel,Vba,Excel,我试图从Inv变量中获取最小值。。这是可行的,但是我想我可能可以将I=y添加到If-Tmp的末尾。。。语句,因此一旦它应用于Tmp

我试图从Inv变量中获取最小值。。这是可行的,但是我想我可能可以将I=y添加到If-Tmp的末尾。。。语句,因此一旦它应用于Tmp
Dim Fun As Variant
Dim Tmp As Variant
Dim Inv() As String
Dim i As Integer
Dim y As Integer

Inv = Split("NBInv NEBInv EBInv SEBInv SBInv SWBInv WBInv NWBInv")
Fun = 1000

For i = 0 To UBound(Inv)
    Tmp = Val(ActiveSheet.OLEObjects(Inv(i)).Object.Value)
    If Tmp <> 0 And Tmp <> "" And Tmp < Fun Then Fun = Tmp And i = y
Next i

Smallest = Fun
MsgBox y
Dim Fun作为变体
Dim Tmp作为变体
Dim Inv()作为字符串
作为整数的Dim i
Dim y作为整数
投资=分割(“NBInv NEBInv EBInv SEBInv SBInv SWBInv WBInv NWBInv”)
乐趣=1000
对于i=0到uBond(Inv)
Tmp=Val(ActiveSheet.OLEObjects(Inv(i)).Object.Value)
如果Tmp 0和Tmp“”以及Tmp
让我们将您的
If
语句拆分,看看它实际上做了什么

将条件表达式拉入其块:

If Tmp <> 0 And Tmp <> "" And Tmp < Fun Then 
    Fun = Tmp And i = y
End If
现在看一下表达式
i=y
——因为它在右边,所以它的计算结果是
布尔值
,所以当转换为数字时,它要么是
0
,要么是
-1
。让我们假设它是
0
,并将其放回表达式:
Temp和0
。这是执行二进制And操作。然后将结果分配给
Temp
。这是唯一的一件事

我猜你的意图是

If Tmp <> 0 And Tmp <> "" And Tmp < Fun Then 
    Fun = Tmp 
    i = y
End If
如果Tmp 0和Tmp“”以及Tmp

…虽然分配给循环计数器是个坏主意。

y
最后是0,因为您从未将
y
设置为任何值-因此它只给出默认值
0
“然后Fun=Tmp和i=y”我也尝试了y=i,但仍然给出了0。这还没定下来吗?
If Tmp <> 0 And Tmp <> "" And Tmp < Fun Then 
    Fun = (Tmp And (i = y))
End If
If Tmp <> 0 And Tmp <> "" And Tmp < Fun Then 
    Fun = Tmp 
    i = y
End If