Как перебрать ячейки в функции MIN/MAX в VB Excel 2003?
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(проблема выделена жирным шрифтом): Спасибо
1 ответ
Невозможно исправить весь ваш код, потому что не ясно, что вы пытаетесь сделать. Но следующее может дать вам начало.
Всегда лучше объявить ваши переменные и указать их тип:
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
:
- Набор используется только для объектов.
- Вы не можете разделять утверждения запятыми.
На некоторых языках
min=min1=1000
средстваmin1=1000, min=min1
но в VBA это означает:If min1=1000 Then min=True Else min=False End if
Здесь нет Do
в конце для заявления. Так:
For i = 2 To 10
MIN и MAX - функции листа. Чтобы использовать затем в VBA, вы должны сказать, что они являются функциями листа. В конце утверждений в VBA нет точек с запятой. Вы использовали j в функции MIN, но еще не установили ее значение.
Я не могу сказать местоположение значений, которые являются параметрами 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 для массива, но я не знаю способа выбора части массива.
Надеюсь, это даст вам начало.