Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.11.2008, 12:41   #1
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
Восклицание Проблема с UserForm. То работает, то НЕ работает

Прблема №1:
Если выбрать опцию "По рыночной", а затем вернуться на "По заданной цене", то в окне "отклонение" должно оявиться значение 0,001 (как задано кодом), а не 0.001

Проблема №2:
При нажатии на КоммандБоттон 3 или 4 значение в "отклонении" должно увеличиваться или уменьшаться на 0,001 соответственно. Вместо этого при увеличении получается 0.002 и программа выдает ошибку "Type mismatch"

Вся хреновена в том, что Форма ТО РАБОТАЕТ, ТО НЕ РАБОТАЕТ!!!

НЕ ПОНЯТНО?
Вложения
Тип файла: rar Форма.rar (17.6 Кб, 18 просмотров)
Maxx вне форума
Старый 19.11.2008, 13:23   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
то в окне "отклонение" должно оявиться значение 0,001 (как задано кодом), а не 0.001
Вообще-то, кодом задано именно TextBox1.Value = 0.001

Вместо этой строки напишите TextBox1.Value = "0,001"

Цитата:
Проблема №2
Оставьте строку TextBox1.Value = 0.001 как есть, и замените обработчики событий
CommandButton3_Click и CommandButton4_Click на следующий код:
(кроме того, добавьте процедуру UserForm_Initialize)

Код:
Private Sub CommandButton3_Click()
    TextBox1.Value = Val(TextBox1.Value) + 0.001
End Sub

Private Sub CommandButton4_Click()
    If Val(TextBox1.Value) <> 0 Then TextBox1.Value = Val(TextBox1.Value) - 0.001
End Sub

Private Sub UserForm_Initialize()
    'Application.DecimalSeparator = "."  ' эта строка в принципе не нужна
    TextBox1.Value = 0.001
End Sub

Последний раз редактировалось EducatedFool; 19.11.2008 в 13:37.
EducatedFool вне форума
Старый 19.11.2008, 13:36   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

На вся фишка в том и есть, что не смотря на то, что кодом задано 0.001, все равно появляется 0,001 (в том случае когда форма работает!).

А если задать TextBox1.Value = "0,001", то не будет ли это значение восприниматься как текст?
Maxx вне форума
Старый 19.11.2008, 13:42   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Немного подправил код в предыдущем посте...

В итоге, если сделать так, работать будет корректно.

Код:
Private Sub CommandButton3_Click()
    TextBox1.Value = Val(TextBox1.Value) + 0.001
End Sub

Private Sub CommandButton4_Click()
    If Val(TextBox1.Value) <> 0 Then TextBox1.Value = Val(TextBox1.Value) - 0.001
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Value = 0.001
End Sub
И из TextBox1 можно убрать значение по умолчанию ("0,001") - которое Вы задали при проектировании формы

Или поставить там его в виде 0.001, тогда процедура Private Sub UserForm_Initialize() будет не нужна.
EducatedFool вне форума
Старый 19.11.2008, 14:01   #5
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

ЗДОРОВО! Форма работает, но теперь не работает сам код:

' Определение цены продажи
Отклонение = UserForm3.TextBox1.Value

выделяет эту строку желтым и пишет "Type mismatch"

Вообще затея была такая, чтобы отображать в ТекстБокс значение с запятой. Ведь это значение используется в расчетах для определения цены, а ВСЕ цены в самой программе (т.е. в екселевских ячейках) стоят именно с запятой.

И изначально я исходил из того, что VBA не может складывать цифры с точкой и запятой, что они должны быть в одном формате.

И све-равно остается вопрос, почему моя начальная форма то работает, то нет?!
Maxx вне форума
Старый 19.11.2008, 14:11   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Для получения числового (а не текстового) значения используйте функцию Val

' Определение цены продажи
Отклонение = Val(UserForm3.TextBox1.Value)

Цитата:
И све-равно остается вопрос, почему моя начальная форма то работает, то нет?!
В чём проявляется её неработоспособность? У меня вроде всё работает без сбоев...
EducatedFool вне форума
Старый 19.11.2008, 14:51   #7
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Гениально! Все заработало как надо! Огромное СПАСИБО! В который раз выручаете!
Maxx вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает SendMessage MaTBeu Win Api 6 01.10.2008 19:00
Не работает скрипт maximYCH PHP 17 27.08.2008 19:00
не работает! RECREATOR Общие вопросы Delphi 6 29.11.2007 12:42
Не работает try except!!! Radost БД в Delphi 17 03.06.2007 11:07