Се
Сергей

в чем ошибка? пишет "end if without block if" , хотя блок if есть! (Visual basic)

задание: верно ли, что max и min элементы матрицы А (5,5) расположены по разные стороны её главной диагонали?
Sub maa9()
Dim A(1 To 5, 1 To 5) As Integer
Dim i As Byte, j As Byte, imax As Byte, imin As Byte, jmax As Byte, jmin As Byte, min As Integer, max As Integer
For i = 1 To 5
For j = 1 To 5
A(i, j) = Cells(i, j)
Next j: Next i
max = A(1, 1)
min = A(1, 1)
imax = 1
imin = 1
jmax = 1
jmin = 1
For i = 1 To 5
For j = 1 To 5
If A(i, j) > max Then max = A(i, j): imin = i: jmax = j Else If A(i, j) < min Then min = A(i, j): imin = i: jmin = j
End If ЗДЕСЬ ОШИБКУ ВЫДАЁТ
Next i
Next j
If imax > jmax Then If imin < jmin Then Cells(1, "A") = "да"
Cells(1, "B") = "нет"
ActiveSheet.Range("a1:e5").Select
With Selection
.Font.Name = "times new roman"
.Font.Size = 14
.Font.Color = 120
.Font.Bold = True
.Font.Italic = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Borders.Color = RGB(0, 200, 0)
End With

End Sub

Я исправила не так, как вы мне посоветовали, но программа у меня пошла. только вот требуемого результата не получается, скажите пожалуйста, может у меня ошибка в условии, там где уже проверка идёт. я ввела произвольную матрицу так чтобы максимальный и мин элементы были по разные стороны гл диагонали, должно быть выведено "да" но у меня "нет" все время пишет. в чём проблема? ? вот в таком виде программа
Sub maa9()
Dim A(1 To 5, 1 To 5) As Integer
Dim i As Byte, j As Byte, imax As Byte, imin As Byte, jmax As Byte, jmin As Byte, min As Integer, max As Integer
For i = 1 To 5
For j = 1 To 5
A(i, j) = Cells(i, j)
Next j: Next i
max = A(1, 1)
min = A(1, 1)
imax = 1
imin = 1
jmax = 1
jmin = 1
For i = 1 To 5
For j = 1 To 5
If A(i, j) > max Then max = A(i, j): imin = i: jmax = j Else If A(i, j) < min Then min = A(i, j): imin = i: jmin = j
Next j
Next i
If imax > jmax Then If imin < jmin Then Cells(1, "F") = "да"
Cells(1, "G") = "нет"
ActiveSheet.Range("a1:e5").Select
With Selection
.Font.Name = "times new roman"
.Font.Size = 14
.Font.Color = 120
.Font.Bold = True
.Font.Italic = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Borders.Color = RGB(0, 200, 0)
End With

End Sub

Может быть, неправильно там где селлз????

СА
Святослав Агафонов

> If A(i, j) > max Then max = A(i, j): imin = i: jmax = j Else If A(i, j) < min Then min = A(i, j): imin = i: jmin = j
> End If ЗДЕСЬ ОШИБКУ ВЫДАЁТ
Два IF и только один END IF.
Попробуй слитно написать: ElseIf.
Не нужно пытаться написать все в одну строку, пиши каждый оператор с новой строки:
If A(i, j) > max
max = A(i, j)
imin = i
jmax = j
ElseIf A(i, j) < min
min = A(i, j)
imin = i
jmin = j
End If

так и код лучше читается, и ошибок меньше будет.

Похожие вопросы
Программисты, скажите, где у меня ошибка в коде Visual Basic?
Правильный IF в хранимой процедуре, в моем варианте после END IF; и end пишет ошибку
Visual Basic посмотреть простейшую задачу, не получается что-то с переменной if и ElseIf
Перевод с Visual Basic на PHP - в чем ошибка?
Visual Basic Не могу понять где в коде ошибка
Программирование Visual Basic 2010 ошибка
Можно ли в Visual Basic писать условия If через And?
Блок схема visual basic
visual basic
Кто пишет программы в Visual Studio 2010 на Visual Basic за деньги?