Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка в программном коде "End if without block if" в VBA Excel / 3 сообщений из 3, страница 1 из 1
10.12.2017, 17:02
    #39567311
Snecks09010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в программном коде "End if without block if" в VBA Excel
Здравствуйте, учусь в университете и задали задание "Решение квадратного уравнения ax2+bx+c=0 . В программе учтите все возможные проверки и допущения:A=0;B=0;C=0;A=b=0;A=c=0;A=c=0" через форму в VBA Excel.
Ниже прикрепил скрин с формой как она выглядит. Код написан для кнопки "Счет". Когда нажимаю на кнопку выдает ошибку в VBA "End if without block if" , как бы я не пытался исправить, всё равно где-то она появляется. Остановился на этом варианте кода. Красным отметил где программа останавливается и выдает ошибку. Поэтому прошу помощи у вас как исправить и возможно как-то дополнить код, чтобы он исправно работал. Если нужна какая-то дополнительная информация пишите прикреплю дальше в теме. Заранее спасибо за ответы и помощь.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
Private Sub CommandButton1_Click()

If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Or Not IsNumeric(TextBox3) Then
MsgBox "Исходные данные введены неверно или не полностью!", , "Введите числа"
Exit Sub
Else
a = CDbl(TextBox1)
b = CDbl(TextBox2)
c = CDbl(TextBox3)
End If


If (a = 0 And b = 0) Or (D < 0) Then
MsgBox "Корней нет"
Exit Sub
End If

If (a = 0 And c = 0) Or (b = 0 And c = 0) Then
TextBox5 = "0"
Exit Sub
End If

If a = 0 Then
If b <> 0 Then
TextBox5 = -c / b
Else
MsgBox "На ноль делить нельзя!"
Exit Sub
End If
End If

If b = 0 Then
If a = 0 Then MsgBox "На ноль делить нельзя!"
Exit Sub
Else
If -c / a < 0 Then
MsgBox "Нельзя извлекать корень из отрицательного числа"
Exit Sub
Else
If a = 0 Then
MsgBox "На ноль делить нельзя!"
Exit Sub
Else
TextBox5 = Sqr(-c / a) And TextBox6 = -Sqr(-c / a)
End If
End If
End If
 End If


If с = 0 Then
If a <> 0 Then
TextBox5 = "0" And TextBox6 = -b / a
Else: MsgBox "На ноль делить нельзя!"
Exit Sub
End If
End If

D = (b) ^ 2 * -4 * a * c
If a <> 0 And b <> 0 And c <> 0 Then
TextBox5 = (-b + Sqr(D)) / 2 * a And TextBox6 = (-b - Sqr(D)) / 2 * a
Else
MsgBox "На ноль делить нельзя!"
Exit Sub
End If


End Sub


...
Рейтинг: 0 / 0
10.12.2017, 17:29
    #39567323
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в программном коде "End if without block if" в VBA Excel
1) В университете не учили ставить отступы для строк, когда погружаешься в цикл или условие?

поставьте отступы, сразу будет видна ошибка

2) В университете не давали синтаксис if для VB?

Код: vbnet
1.
If условие Then оператор

и
Код: vbnet
1.
2.
3.
If условие Then
  оператор
End If



это разный синтакис и его нельзя смешивать
...
Рейтинг: 0 / 0
10.12.2017, 17:50
    #39567328
Snecks09010
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в программном коде "End if without block if" в VBA Excel
Спасибо большое, нет, к сожалению в университете не учили, так как информатика идет как второстепенный предмет и учебного времени на нее уделяется мало. Как вы посоветовали действительно проще и легче найти где ошибся, еще раз большое спасибо)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка в программном коде "End if without block if" в VBA Excel / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]