Страницы: 1
RSS
Ошибка: несовпадение типов при сложении на форме
 
Добрый день. немогу никак разобраться с кодом...  
Есть форма... на ней есть три текстбокса. Вношу в них числовые данные...в четвертом текстбоксе показывается их сумма:    
 
Private Sub costotpravki_Change()  
Dim a1 As Double  
Dim a2 As Double  
Dim A3 As Double  
a1 = costotpravki.Value  
a2 = pochtrashod.Value  
A3 = doprashod.Value  
zatraty0.Value = a1 + a2 + A3  
End Sub  
Private Sub pochtrashod_Change()  
Dim a1 As Double  
Dim a2 As Double  
Dim A3 As Double  
a1 = costotpravki.Value  
a2 = pochtrashod.Value  
A3 = doprashod.Value  
zatraty0.Value = a1 + a2 + A3  
End Sub  
Private Sub doprashod_Change()  
Dim a1 As Double  
Dim a2 As Double  
Dim A3 As Double  
a1 = costotpravki.Value  
a2 = pochtrashod.Value  
A3 = doprashod.Value  
zatraty0.Value = a1 + a2 + A3  
End Sub  
 
Далее, при нажатии кнопки данные из этих трех переношу на лист в таблицу, таким образом:    
WS111.Cells(i, 23).Value = costotpravki.Value  
WS111.Cells(i, 24).Value = pochtrashod.Value  
WS111.Cells(i, 25).Value = doprashod.Value  
 
Вносится на лист без ошибок. При следующей загрузке формы, при нажатии кнопки, данные этих текстбоксов должны заполняться из ячеек листа, куда их и вносил (то есть обратно на форму):  
costotpravki.Value = WS111.Cells(i, 23).Value  
pochtrashod.Value = WS111.Cells(i, 24).Value  
doprashod.Value = WS111.Cells(i, 25).Value  
 
но выскакивает ошибка несовпадение типов(на операциях сложения)  
и еще: данные вносятся в таблицу в столбцы с форматом денежный, а вносятся получается как текст. :(( Что не так?
 
Ну так Вы сами и отвечаете на свой вопрос: "несовпадение типов" :)  
значит надо привести к правильному типу. Например, попробуйте  
 
costotpravki.Value = Val(WS111.Cells(i, 23).Value)  
 
А лучше - приложите файлик с этой формой
 
{quote}{login=Haken}{date=19.08.2010 01:26}{thema=}{post}Ну так Вы сами и отвечаете на свой вопрос: "несовпадение типов" :)  
значит надо привести к правильному типу. Например, попробуйте  
 
costotpravki.Value = Val(WS111.Cells(i, 23).Value)  
 
А лучше - приложите файлик с этой формой{/post}{/quote}  
 
сейчас вроде заработало без ошибки...спасибо. только дробную часть совсем отбрасывает. например в таблице 12,64 а на форму приходит как 12 .. думаю мне надо разобраться со свойством VAL().
 
Десятичные разделители одинаковые?
 
costotpravki.Value = Val(Replace(WS111.Cells(i, 23).Value, ",", "."))
Я сам - дурнее всякого примера! ...
 
Да, десятичные разделители одинаковые. замена не требуется. Продолжаю разбираться. Сейчас после команды    
costotpravki.Value = Val(WS111.Cells(i, 23).Value) -значение в текстбокс записывается, но без дробной части( она просто откидывается).
 
А примерчик никак?
Я сам - дурнее всякого примера! ...
 
{quote}{login=Вячеслав}{date=20.08.2010 05:11}{thema=}{post}Да, десятичные разделители одинаковые. замена не требуется. Продолжаю разбираться. Сейчас после команды    
costotpravki.Value = Val(WS111.Cells(i, 23).Value) -значение в текстбокс записывается, но без дробной части( она просто откидывается).{/post}{/quote}  
Значит разделитель не тот.
 
Выкладываю не пример а рабочий (не доделанный) вариант.. см.текстбоксы касаемые расходов.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
У меня все заносится как надо см. аттач.  
Просто у меня в системных настройках(язык и региональные стандарты) в качестве разделителя точка.
Я сам - дурнее всякого примера! ...
 
Да уж...интересное решение. поменял стандарты на точку и тоже заработало. спасибо за подсказку. Подскажите еще пожалуйста, как сделать чтобы при вводе в текстбокс при нечаянном вводе запятой вместо точки не выскакивала ошибка, то есть автоматом переводилась в точку ( можно так?). и еще когда надо написать в них совсем другое число- я стираю старое полностью и снова ошибка....
 
{quote}{login=Вячеслав}{date=20.08.2010 12:34}{thema=}{post}Да уж...интересное решение. поменял стандарты на точку и тоже заработало. спасибо за подсказку. Подскажите еще пожалуйста, как сделать чтобы при вводе в текстбокс при нечаянном вводе запятой вместо точки не выскакивала ошибка, то есть автоматом переводилась в точку ( можно так?). {/post}{/quote}  
Мой пост от 19.08.2010, 17:35
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх