0
    Set min=min1=1000, max=max1=position=0   
    For i=2 to 10 do 
    min=**MIN(A(i,j):A(i+5,j));**  
    if position=0 then min1=min, position=1 else  
    For j=2 to 10 do  {max=**MAX(A(i,j):A(i+5,j));**  
    if max<min then next j else position=0, next i 

我是新手,并试图在 VB excel 中执行上面的下一个代码(问题以粗体显示):谢谢

4

1 回答 1

7

纠正所有代码是不可能的,因为不清楚您要做什么。但以下内容可能会给您一个开始。

最好声明变量并指定它们的类型:

Dim i As Integer
Dim j As Integer
Dim max As Integer
Dim max1 As Integer
Dim min As Integer
Dim min1 As Integer
Dim Position As Integer

我更喜欢按字母顺序声明它们,但这不是必需的。

你需要:

  min = 1000
  min1 = 1000
  max = 0
  max1 = 0
  Position = 0

中存在以下错误Set min=min1=1000, max=max1=position=0

  • Set 仅用于对象。
  • 不能用逗号分隔语句。
  • 在某些语言中min=min1=1000意味着min1=1000, min=min1,但在 VBA 中,它意味着:

    If min1=1000 Then
      min=True
    Else
      min=False
    End if 
    

DoFor 语句的末尾没有。所以:

    For i = 2 To 10

MIN 和 MAX 是工作表函数。要在 VBA 中使用 then 你必须说它们是工作表函数。VBA 中的语句末尾没有分号。您在 MIN 函数中使用了 j 但尚未设置其值。

我无法告诉作为 MIN 和 MAX 参数的值的位置。

如果该位置在当前工作表中,您需要以下内容:

With ActiveSheet
  min = Application.WorksheetFunction.min(.Range("B16:F16"))
End With

或者可能像:

With ActiveSheet
  min = Application.WorksheetFunction.min(.Range(.Cells(i,j),.Cells(i+5,j)))
End With

可以在数组上使用 MIN 和 MAX 函数,但我不知道如何选择数组的一部分。

希望这能给你一个开始。

于 2011-12-22T14:05:08.433 回答