Тема: Как произвести вывод посчёта 1 раз!!!

Т.е вопрос вот в чём....
Вот кусок программы..
if a ="" tnen
   'Что-то делаем
    if то-то...
       MsgBox"Неправельный ввод"
    end if
  else
    'текст программы
end if
Mas = Lob1 + Lob2
        textStrN5 = Format(Mas, "0.00")
        pM(0) = 386:
        pM(1) = 250:
        pM(2) = 0
Set textN5 =ThisDrawing.ModelSpace.AddText(textStrN5,pM,h1)
Проблема в том,что он считает и выводит всё в любом случаи..т.е если 10 раз будет неправельный ввод,то он всеровно всё подсчитает и вывидет...а мне нужно только чтобы 1 раз,когда всё будет введено привильно..

Re: Как произвести вывод посчёта 1 раз!!!

> Aleksandr

if то-то...
MsgBox"Неправельный ввод"
[b]Exit Sub[/b]
end if

Re: Как произвести вывод посчёта 1 раз!!!

Спасиб!
Ответьте плиз на ещё 1 детский вопросик...
Как в "if" впихнуть много условий???
Допустим..
if (a>5 or a<10) (b>6 or b<11) then
   'текст программы
end if
Что нужно поставить между (a>5 or a<10) и (b>6 or b<11)??? ставлю "And" не помогает(((

Re: Как произвести вывод посчёта 1 раз!!!

Может стоит при форуме организовать еще курсы по изучению русского языка?
Все таки, это наша среда обитания.

Re: Как произвести вывод посчёта 1 раз!!!

> Aleksandr

if (a>5 or a<10) (b>6 or b<11) then

Здесь надо разобраться с логикой. Выражения в скобках всегда Истина. Поэтому, поставите Вы между скобками And или Or не имеет значения.

Re: Как произвести вывод посчёта 1 раз!!!

Хорошо...если не сложно, то напишите код...
Нужно чтобы при a>5 и а<10 и b>10 и b<20 выполняется код...
Если ХОТЬ ОДНО УСЛОВИЕ НЕ ВЫПОЛНЯТСЯ, то уже делаем что-то другое..

Re: Как произвести вывод посчёта 1 раз!!!

Private Sub CommandButton1_Click()
If TextBox1.Text > 1 Or TextBox1.Text < 10 _
Or TextBox2.Text > 10 Or TextBox2.Text < 20 Then
   MsgBox "Круто!!!"
   Else
   MsgBox "Не круто!!!"
End If
End Sub
Так не получается...(((Что не так???

Re: Как произвести вывод посчёта 1 раз!!!

А какого <...> ты сравниваешь тексты с числами??

Нужно чтобы при a>5 и а<10 и b>10 и b<20 выполняется код...

Примерно так:

Private Sub btnEval_Click()
Dim txt1 As Long, txt2 As Long
  With Me
    txt1 = CLng(.TextBox1.Text): txt2 = CLng(.TextBox2.Text)
    If txt1 > 5 And txt1 < 10 And txt2 > 10 And txt2 < 20 Then
      MsgBox "Круто типа"
    Else
      MsgBox "А вот это не очень"
    End If
  End With
End Sub

Re: Как произвести вывод посчёта 1 раз!!!

Дык в TextBox-сы я цисла забиваю...

Re: Как произвести вывод посчёта 1 раз!!!

> Aleksandr
И что? Слово .Text ни о чем не говорит?

Re: Как произвести вывод посчёта 1 раз!!!

Я понимаю,что текстовый тип...и что? научите дурака плизз...скажите как надо..буду оч признателен.

Re: Как произвести вывод посчёта 1 раз!!!

CLng - преобразование в Long, который и сравнивается. Стандартная функция.

Re: Как произвести вывод посчёта 1 раз!!!

Проанализируй мой код
P.S. Меня - один.

Re: Как произвести вывод посчёта 1 раз!!!

> Aleksandr
VBA по барабану типы данных для сравнения
Открой редактор, открой Immediate Window,
вставь выражение:

?"1.4999999999999">"1.4999999999998"

нажми Enter
Смотри результат
Поменяй знак > на <, тоже сравни
То есть ты ввел две строки, а интерпретатор VBA
все равно сравнил их как вещественные числа
Проверь тоже самое на целых числах
К сожалению с комплесными строками этот фокус
не прокатывает
Но в твоем случае все должно работать
Я еще бы ввел событие KeyPress для обоих текстбоксов
чтобы туда не вводились например буквы и другие
ненужные знаки
Вообще почаще пользуйся Yandex или Google найдешь
много интересного насчет VBA, к сожалению на новом
форуме поиск как-то не очень по-моему...
~'J'~

Re: Как произвести вывод посчёта 1 раз!!!

> Кулик Алексей aka kpblc

txt1 = CLng(.TextBox1.Text): txt2 = CLng(.TextBox2.Text)

Здесь должна быть проверка "на число" или обработка ошибок. Функция CLng не сработает, если ее параметром будет не число или пустая строка. Выскочит ошибка.

Fatty пишет:

VBA по барабану типы данных для сравнения
Открой редактор, открой Immediate Window,
вставь выражение:
?"1.4999999999999">"1.4999999999998"

Извините, но Вы ошибаетесь. В вашем примере идет именно сравнение строк по правилам сравнения строк! Наберите

?"2.4999999999999">"10.4999999999998"

И посмотрите результат.

Re: Как произвести вывод посчёта 1 раз!!!

> brigval
Согласен, ошибся :)
~'J'~

Re: Как произвести вывод посчёта 1 раз!!!

> Fatty
Мне эти числа в тексте постоянно жизнь портят. Хочешь не хочешь, а приходится с ними считаться ;)

Re: Как произвести вывод посчёта 1 раз!!!

Цитата из Help (Если верить автору книжки):
"Функция Val... возвращает число содержащееся в строке. Символы типа знака доллара и запятой не распознаются. Функция Val распознает ... только точку. Если существует возможность использовать другие разделители целой и дробной части, ... следует применять функцию CDbl"
Я этой рекомендации придерживаюсь и пока она меня не подводила.
Aleksahdr, вот пример проверки на ввод чисел, о которой упоминает Fatty:

Private Sub TexNew_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If (InStr("0123456789.", Chr(KeyAscii)) = 0) Then
                  KeyAscii = 0
    End If
End Sub

И еще. Постарайся на русскоязычном форуме пользоваться русским языком.

Re: Как произвести вывод посчёта 1 раз!!!

> LeonidSN
Я обычно пользуюсь немного другой проверкой. Мне она кажется нагляднее, что ли. Правда, это для целых чисел. Можно добавить и проверку на точку, но нужно добавить еще одну конструкцию IF

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Re: Как произвести вывод посчёта 1 раз!!!

> Loner Wanderer
Строка хороша тем, что можно воткнуть любой символ. Вот пример из реальной программы:

If (InStr([b]"0123456789.+-*/()Xx"[/b], Chr(KeyAscii)) = 0) Then
                  KeyAscii = 0
        End If