Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
30 / 8 / 0
Регистрация: 30.09.2011
Сообщений: 33

Проверка условия при использовании If Then

29.02.2012, 16:16. Показов 1835. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попробовал два варианта использования модуля if Then
В первом случае выводит присваивает результат по последней формуле Np даже если условие совершилось раньше.
Во 2м считает тоже ошибочно. Подскажите как вывести верный результат
1 вариант:

Visual Basic
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
Sub CommandButton3_Click()
Pk = 0
Gvd = 0
Pk = Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("B19")
Gvd = Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data HRSG1").Range("B14")
N10 = 198158 * (Pk ^ 3) - 34222 * (Pk ^ 2) + 1802.7 * (Pk) - 29.214
N09 = 176310 * (Pk ^ 3) - 30670 * (Pk ^ 2) + 1622.2 * (Pk) - 26.351
N08 = 154461 * (Pk ^ 3) - 27118 * (Pk ^ 2) + 1441.8 * (Pk) - 23.488
N07 = 132612 * (Pk ^ 3) - 23566 * (Pk ^ 2) + 1261.3 * (Pk) - 20.624
N06 = 110764 * (Pk ^ 3) - 20014 * (Pk ^ 2) + 1080.8 * (Pk) - 17.761
N05 = 88915 * (Pk ^ 3) - 16462 * (Pk ^ 2) + 900.37 * (Pk) - 14.898
N04 = 67066 * (Pk ^ 3) - 12911 * (Pk ^ 2) + 719.91 * (Pk) - 12.035
N03 = 45218 * (Pk ^ 3) - 9358.7 * (Pk ^ 2) + 539.45 * (Pk) - 9.1716
N02 = 23369 * (Pk ^ 3) - 5806.8 * (Pk ^ 2) + 358.98 * (Pk) - 6.3084
N01 = 7324.9 * (Pk ^ 3) - 3196.3 * Pk ^ 2 + 228.95 * Pk - 4.3343
If 75.56 <= Gvd < 71.96 Then
dN = N01 - (N01 - N02) / (71.96 - 75.56) * (75.56 - Gvd)
End If
If 71.96 <= Gvd < 68.36 Then
dN = N02 - (N02 - N03) / (68.36 - 71.96) * (68.36 - Gvd)
End If
If 68.36 <= Gvd < 64.76 Then
dN = N03 - (N03 - N04) / (64.76 - 68.36) * (64.76 - Gvd)
MsgBox dN
End If
If 64.76 <= Gvd < 61.16 Then
dN = N04 - (N04 - N05) / (61.16 - 64.76) * (61.16 - Gvd)
End If
If 61.16 <= Gvd < 57.56 Then
dN = N05 - (N05 - N06) / (57.56 - 61.16) * (57.56 - Gvd)
End If
If 57.56 <= Gvd < 53.96 Then
dN = N06 - (N06 - N07) / (53.96 - 57.56) * (53.96 - Gvd)
End If
If 53.96 <= Gvd < 50.36 Then
dN = N07 - (N07 - N08) / (50.36 - 53.96) * (50.36 - Gvd)
End If
If 50.36 <= Gvd < 46.76 Then
dN = N08 - (N08 - N09) / (46.76 - 50.36) * (46.76 - Gvd)
End If
If 46.76 <= Gvd < 43.16 Then
dN = N09 - (N09 - N10) / (43.16 - 46.76) * (43.16 - Gvd)
End If
Windows("ТЭП_НГРЭС").Activate
Np = Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("B3") - dN
Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("B4") = Np
Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("E4") = dN
MsgBox N03
MsgBox N04
MsgBox dN
End Sub
2 вариант:

Visual Basic
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
Sub CommandButton3_Click()
Pk = 0
Gvd = 0
Pk = Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("B19")
Gvd = Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data HRSG1").Range("B14")
N10 = 198158 * (Pk ^ 3) - 34222 * (Pk ^ 2) + 1802.7 * (Pk) - 29.214
N09 = 176310 * (Pk ^ 3) - 30670 * (Pk ^ 2) + 1622.2 * (Pk) - 26.351
N08 = 154461 * (Pk ^ 3) - 27118 * (Pk ^ 2) + 1441.8 * (Pk) - 23.488
N07 = 132612 * (Pk ^ 3) - 23566 * (Pk ^ 2) + 1261.3 * (Pk) - 20.624
N06 = 110764 * (Pk ^ 3) - 20014 * (Pk ^ 2) + 1080.8 * (Pk) - 17.761
N05 = 88915 * (Pk ^ 3) - 16462 * (Pk ^ 2) + 900.37 * (Pk) - 14.898
N04 = 67066 * (Pk ^ 3) - 12911 * (Pk ^ 2) + 719.91 * (Pk) - 12.035
N03 = 45218 * (Pk ^ 3) - 9358.7 * (Pk ^ 2) + 539.45 * (Pk) - 9.1716
N02 = 23369 * (Pk ^ 3) - 5806.8 * (Pk ^ 2) + 358.98 * (Pk) - 6.3084
N01 = 7324.9 * (Pk ^ 3) - 3196.3 * Pk ^ 2 + 228.95 * Pk - 4.3343
If 75.56 <= Gvd < 71.96 Then
dN = N01 - (N01 - N02) / (71.96 - 75.56) * (75.56 - Gvd)
 Else
   If 71.96 <= Gvd < 68.36 Then
   dN = N02 - (N02 - N03) / (68.36 - 71.96) * (68.36 - Gvd)
     Else
     If 68.36 <= Gvd < 64.76 Then
     dN = N03 - (N03 - N04) / (64.76 - 68.36) * (64.76 - Gvd)
       Else
       If 64.76 <= Gvd < 61.16 Then
       dN = N04 - (N04 - N05) / (61.16 - 64.76) * (61.16 - Gvd)
          Else
          If 61.16 <= Gvd < 57.56 Then
          dN = N05 - (N05 - N06) / (57.56 - 61.16) * (57.56 - Gvd)
          Else
          If 57.56 <= Gvd < 53.96 Then
          dN = N06 - (N06 - N07) / (53.96 - 57.56) * (53.96 - Gvd)
           Else
           If 53.96 <= Gvd < 50.36 Then
           dN = N07 - (N07 - N08) / (50.36 - 53.96) * (50.36 - Gvd)
            Else
            If 50.36 <= Gvd < 46.76 Then
            dN = N08 - (N08 - N09) / (46.76 - 50.36) * (46.76 - Gvd)
              Else
              If 46.76 <= Gvd < 43.16 Then
              dN = N09 - (N09 - N10) / (43.16 - 46.76) * (43.16 - Gvd)
              Else: GoTo 400
               End If
               End If
              End If
            End If
           End If
         End If
       End If
   End If
End If
Windows("ТЭП_НГРЭС").Activate
Np = Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("B3") - dN
Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("B4") = Np
Workbooks("ТЭП_НГРЭС.xlsm").Worksheets("Data ST").Range("E4") = dN
MsgBox N03
MsgBox N04
MsgBox dN
400:
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.02.2012, 16:16
Ответы с готовыми решениями:

Проверка при использовании menustrip
Добрый день! Я создала свой menustrip c шахматами и поэтессами Я хочу сделать неактивным один элемент на первой вкладки, и активными...

Проверка данных при использовании Html.BeginForm
Добрый день. Подскажите, пожалуйста, правильный способ проверки ввода данных при использовании такой структуры? @using...

Проверка выполнения условия при нажатии кнопки SpeedButton
подскажите плис, как в Borland C++ Builder прописать условие, которое проверяет что при нажатии одной кнопки SpeedButton выполнялось одно...

3
здесь больше нет...
3376 / 1674 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
29.02.2012, 18:14
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
If 75.56 <= Gvd < 71.96 Then
так не есть гуд.

Visual Basic
1
If (75.56 <= Gvd) And (Gvd < 71.96) Then
так будет истинным, если оба условия истинны [И]

Visual Basic
1
If (75.56 <= Gvd) Or (Gvd < 71.96) Then
так - если хотя бы одно [ИЛИ]
4
30 / 8 / 0
Регистрация: 30.09.2011
Сообщений: 33
29.02.2012, 19:01  [ТС]
Спасибо все заработало!
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
29.02.2012, 20:20
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от morgen84 Посмотреть сообщение
If 75.56 <= Gvd < 71.96 Then
А вот здесь мы делаем буквально следующее:
1 - проверяем, а не меньше ли 75.56 какого-то Gvd? Результат - False(=0) или True(=-1)
2 - проверяем, а не меньше ли предыдущий (0 или -1) результат числа 71.96?

И удивляемся - а почему всегда True?
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.02.2012, 20:20
Помогаю со студенческими работами здесь

Внутри проверки условия не производится ещё одна проверка условия
Как задумывалось - при нажатии на джойстик просто должны были остановится движки, но если при этом нажат джойстик по оси Y в опр...

Проверка условия при заполнении формы, вывод диалогового окна
Форумчане, доброго времени суток! Помогите решить проблему. Нужна процедура которая проверяет выполняется ли условие равенства ...

Ошибки в использовании оператора условия, как от них избавиться?
Как избавиться от подобных ошибок? Сам код: program home_work; var r1, r2, r3, r4, angle: integer; begin readln(angle); ...

Описать оператор выбора, в котором при истинности второго условия выполняются действия и третьего условия тоже
помогите пожалуйста ответить на вопрос 2. Описать оператор выбора, в котором при истинности второго условия выполняются действия и...

проверка условия if else
доброго времени суток всем) возникли сложности с проверкой условия. есть границы записанные в *.INI файле, и есть данные в Edite....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru