|
Вопрос # 3 379/ вопрос открыт / |
|
Excel 2007 VB 6.5
Доброго времени суток, уважаемые эксперты!
Подскажите как произвести вычисление, если в TextBox число с десятичными значениями разделяется точкой, а ячейка .Cells(i, 5).Value имеет числовой формат с десятичными значениями через запятую?
.Cells(i, 5).Value = UserForm1.TextBox3.Text + .Cells(i, 5).Value
 |
Вопрос задал: resseg (статус: Посетитель)
Вопрос отправлен: 8 ноября 2009, 23:51
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, resseg!
Сталкивался с подобным. Нашёл для себя такой выход - менять запятую на точку ещё на этапе ввода:
Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If VBA.Chr(KeyAscii) = "," Then KeyAscii = VBA.Asc(".")
End Sub
Теперь при вводе запятой она будет меняться на точку сама.
Мы, кстати, подобный вопрос рассматривали в вопросе 3060
Другой вариант - заменять точку на запятую перед преобразованием в число:
.Cells(i, 5).Value = VBA.Val(VBA.Replace(UserForm1.TextBox3.Text, ",", ".")) + .Cells(i, 5).Value
Код проверял в Excel 2003, поэтому, возможно, что-то не сработает в 2007-ом - пишите, разберёмся
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 9 ноября 2009, 07:20
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 9 ноября 2009, 18:52; участников в обсуждении: 2.
|
resseg (статус: Посетитель), 9 ноября 2009, 17:13 [#1]:
Использовал данный код
.Cells(i, 5).Value = VBA.Val(VBA.Replace(UserForm1.TextBox3.Text, ",", ".")) + .Cells(i, 5).Value
На 2007 тоже работает. В дальнейшем не подведет?
|
|
Егор (статус: 10-ый класс), 9 ноября 2009, 18:48 [#2]:
да не должен
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
resseg (статус: Посетитель), 9 ноября 2009, 18:52 [#3]:
Тогда спасибо.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|