Vba.
как переделать этот код , что б он считал и менял меж собой минимальные и максимальные элементы не столбцов,А строк?

Private Sub CommandButton1_Click()
Dim s() As Integer, n As Integer, m As Integer
Dim i As Integer, j As Integer
Dim min As Integer, max As Integer

Cells.Clear
n = InputBox("CTROKI", , 4)
m = InputBox("CTOLBEC", , 5)
Randomize
ReDim s(n, m) As Integer
For j = 1 To m
max = -100: min = 100
For i = 1 To n
s(i, j) = Rnd() * 60 - 10
Cells(i + 1, j + 1) = s(i, j)
Cells(i + 3 + n, j + 1) = s(i, j)
If min > s(i, j) Then
min = s(i, j)
q = j
End If
If max < s(i, j) Then
max = s(i, j)
w = j
End If
Next
s(i, q) = min
Cells(w + 3 + n, j + 1) = s(w, j)
s(i, w) = max
Cells(q + 3 + n, j + 1) = s(q, j)
Next
End Sub


Аноним: А он у Вас не работает, слетает по неверной индексации на s(i, q) = min
lozroman: s(w, j) = min
Cells(w + 3 + n, j + 1) = s(w, j)
s(q, j) = max
Cells(q + 3 + n, j + 1) = s(q, j)
Next
End Sub

а если заменить вот так?
Аноним: Да запустите проверьте с Вашими же значениями по умолчанию
lozroman: у меня работает,иногда ,непонятно почему,дает осечку. Но не в этом вопрос
Аноним: Вопрос в этом, потому что Вы просите не НАПИСАТЬ, а ПЕРЕДЕЛАТЬ.
Аноним: Для этого должно исходное четко работать
lozroman: Вот этот код работает.
Но когда я пытаюсь его переделать как нужно он как раз и начинает ругаться на индексы
Аноним: Это код НЕ РАБОТАЕТ! Я уже написал, что он дает ошибку при значениях по умолчанию.
Аноним: При n=4, m=5 оператор s(i, q) = min не может выполниться для i=5
Аноним: Т.е. при Вашей последней переделке теперь w=5

Ответы

Ответ дал: Аноним
0
Private Sub CommandButton1_Click()
    Dim s() As Integer, n As Integer, m As Integer
    Dim i As Integer, j As Integer
    Dim min As Integer, max As Integer, q As Integer, w As Integer
    Cells.Clear
    n = InputBox("CTROKI", , 4)
    m = InputBox("CTOLBEC", , 5)
    Randomize
    ReDim s(n, m) As Integer
    For i = 1 To n
        max = -100: min = 100
        For j = 1 To m
            s(i, j) = Int(Rnd() * 60 - 10)
            Cells(i, j) = s(i, j)
            Cells(i + 2 + n, j) = s(i, j)
            If min > s(i, j) Then
                min = s(i, j)
                q = j
            End If
            If max < s(i, j) Then
                max = s(i, j)
                w = j
            End If
        Next j
        Cells(i + 2 + n, w) = min
        Cells(i + 2 + n, q) = max
    Next i
End Sub


Вас заинтересует