Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/TextBox и разделитель десятичных дробей - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » TextBox и разделитель десятичных дробей (Макросы/Sub)
TextBox и разделитель десятичных дробей
Stork4ever Дата: Воскресенье, 10.09.2017, 18:11 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Существует проблема/особенность при работе с десятичными дробями - это разделитель "." или ",". Приходится делать автозамену. После замены "." на "," значения записываются в ячейку правильно, но не все формулы их воспринимают правильно.
Например:
A3=СУММ(A1:A2) - не вычисляет
a вот
A3=A1 + A2 - вычисляет без проблем

Кроме того при выделении диапазона (A1:A2) в правом нижнем углу окна Excel также не считается сумма, а показывает только количество выделенных ячеек.

Как правильно задать формат для TextBox, чтобы значение воспринималось, как число и формула на листе работала? И как правильно установить ограничения, что бы нельзя было ввести ничего, кроме числа с десятичными значениями в поле TextBox?

Файлик с примером прилагаю.
К сообщению приложен файл: Test2.xls (54.5 Kb)
 
Ответить
СообщениеСуществует проблема/особенность при работе с десятичными дробями - это разделитель "." или ",". Приходится делать автозамену. После замены "." на "," значения записываются в ячейку правильно, но не все формулы их воспринимают правильно.
Например:
A3=СУММ(A1:A2) - не вычисляет
a вот
A3=A1 + A2 - вычисляет без проблем

Кроме того при выделении диапазона (A1:A2) в правом нижнем углу окна Excel также не считается сумма, а показывает только количество выделенных ячеек.

Как правильно задать формат для TextBox, чтобы значение воспринималось, как число и формула на листе работала? И как правильно установить ограничения, что бы нельзя было ввести ничего, кроме числа с десятичными значениями в поле TextBox?

Файлик с примером прилагаю.

Автор - Stork4ever
Дата добавления - 10.09.2017 в 18:11
Udik Дата: Воскресенье, 10.09.2017, 18:52 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Не считает т.к. числа в ячейках сохранены как текст. Поставьте маркер на ячейку с формулой и нажмите Поверка наличия ошибок и всё узрите :)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Воскресенье, 10.09.2017, 18:53
 
Ответить
СообщениеНе считает т.к. числа в ячейках сохранены как текст. Поставьте маркер на ячейку с формулой и нажмите Поверка наличия ошибок и всё узрите :)

Автор - Udik
Дата добавления - 10.09.2017 в 18:52
KuklP Дата: Воскресенье, 10.09.2017, 19:30 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Попробуйте так:
[vba]
Код
Private Sub TextBox1_Change()
    Sheets("Лист1").Range("A1") = Replace(TextBox1, ",", ".")
End Sub

Private Sub TextBox2_Change()
    Sheets("Лист1").Range("A2") = Replace(TextBox2, ",", ".")
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПопробуйте так:
[vba]
Код
Private Sub TextBox1_Change()
    Sheets("Лист1").Range("A1") = Replace(TextBox1, ",", ".")
End Sub

Private Sub TextBox2_Change()
    Sheets("Лист1").Range("A2") = Replace(TextBox2, ",", ".")
End Sub
[/vba]

Автор - KuklP
Дата добавления - 10.09.2017 в 19:30
Udik Дата: Воскресенье, 10.09.2017, 19:34 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
А зачем такой экстравагантный способ ввода в ячейку?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеА зачем такой экстравагантный способ ввода в ячейку?

Автор - Udik
Дата добавления - 10.09.2017 в 19:34
KuklP Дата: Воскресенье, 10.09.2017, 19:36 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Если это мне вопрос, то встречный - Вы попробовали? :) На самом деле там ничего экстравагантного.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЕсли это мне вопрос, то встречный - Вы попробовали? :) На самом деле там ничего экстравагантного.

Автор - KuklP
Дата добавления - 10.09.2017 в 19:36
Udik Дата: Воскресенье, 10.09.2017, 19:42 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Нет, это ТСу. Мне интересно зачем эти упражнения с юзерформой, если можно сразу ввести в ячейки данные. :)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНет, это ТСу. Мне интересно зачем эти упражнения с юзерформой, если можно сразу ввести в ячейки данные. :)

Автор - Udik
Дата добавления - 10.09.2017 в 19:42
KuklP Дата: Воскресенье, 10.09.2017, 19:44 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Не ну это ж пример для форума, правильно, что не рабочий файл с формой на сотню контролов.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНе ну это ж пример для форума, правильно, что не рабочий файл с формой на сотню контролов.

Автор - KuklP
Дата добавления - 10.09.2017 в 19:44
KuklP Дата: Воскресенье, 10.09.2017, 19:54 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Тут на днях похожее обсуждали, но с более извращенными форматами, так ТС сначала выложила как раз файл с такой жуткой формой. А само обсуждение вполне может быть полезно для ТС.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеТут на днях похожее обсуждали, но с более извращенными форматами, так ТС сначала выложила как раз файл с такой жуткой формой. А само обсуждение вполне может быть полезно для ТС.

Автор - KuklP
Дата добавления - 10.09.2017 в 19:54
Stork4ever Дата: Воскресенье, 10.09.2017, 19:54 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Попробуйте так:


Помогло, формула стала считать, но теперь не могу через диалоговое окно ввести запятую, а при вводе в ячейку - ошибка в макросе. Опять конфликт точек и запятых :(

А как сделать , что бы в форму можно было забить только десятичные числа и ничего другого?


Сообщение отредактировал Stork4ever - Воскресенье, 10.09.2017, 20:00
 
Ответить
Сообщение
Попробуйте так:


Помогло, формула стала считать, но теперь не могу через диалоговое окно ввести запятую, а при вводе в ячейку - ошибка в макросе. Опять конфликт точек и запятых :(

А как сделать , что бы в форму можно было забить только десятичные числа и ничего другого?

Автор - Stork4ever
Дата добавления - 10.09.2017 в 19:54
KuklP Дата: Воскресенье, 10.09.2017, 19:56 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Как вариант:
[vba]
Код
Private Sub TextBox1_Change()
Sheets("Лист1").Range("A1") = IIf(IsNumeric(TextBox1), Replace(TextBox1, ",", "."), "")
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеКак вариант:
[vba]
Код
Private Sub TextBox1_Change()
Sheets("Лист1").Range("A1") = IIf(IsNumeric(TextBox1), Replace(TextBox1, ",", "."), "")
End Sub
[/vba]

Автор - KuklP
Дата добавления - 10.09.2017 в 19:56
Stork4ever Дата: Воскресенье, 10.09.2017, 20:00 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Так тоже нет возможности в диалоговом окне ввести разделитель ","
 
Ответить
СообщениеТак тоже нет возможности в диалоговом окне ввести разделитель ","

Автор - Stork4ever
Дата добавления - 10.09.2017 в 20:00
KuklP Дата: Воскресенье, 10.09.2017, 20:12 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Дружище, ну уже самостоятельно пробуйте смекалкой пользоваться :)
[vba]
Код
Private Sub TextBox1_Change()
Sheets("Лист1").Range("A1") = IIf(IsNumeric(Replace(TextBox1, ",", ".")), Replace(TextBox1, ",", "."), "")
End Sub
[/vba]
мона [vba]
Код
Replace(TextBox1, ",", ".")
[/vba]сохранять в переменную и использовать уже ее в вычислении.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеДружище, ну уже самостоятельно пробуйте смекалкой пользоваться :)
[vba]
Код
Private Sub TextBox1_Change()
Sheets("Лист1").Range("A1") = IIf(IsNumeric(Replace(TextBox1, ",", ".")), Replace(TextBox1, ",", "."), "")
End Sub
[/vba]
мона [vba]
Код
Replace(TextBox1, ",", ".")
[/vba]сохранять в переменную и использовать уже ее в вычислении.

Автор - KuklP
Дата добавления - 10.09.2017 в 20:12
Stork4ever Дата: Воскресенье, 10.09.2017, 21:15 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Не работает.

Я уже 4 дня бьюсь над этой проблемой... Понимаю, что решение наверняка простое, но оно пока так и не найдено. Решаю проблему с вычислением, получаю проблему с вводом, решаю проблему с вводом, слетает вычисление. Файл с примером простой, но даже на нем не могу сделать так, что бы работало. Данные должны вводиться, как в ячейку, так и через диалоговое окно. А задача еще и ограничить ввод, что бы через форму диалогового окна можно было вводить только цифры и одну запятую. Еще и ошибки отфильтровать, что бы не слетал макрос в случае некорректного ввода, как в ячейку, так и в TextBox.


Сообщение отредактировал Stork4ever - Воскресенье, 10.09.2017, 21:17
 
Ответить
СообщениеНе работает.

Я уже 4 дня бьюсь над этой проблемой... Понимаю, что решение наверняка простое, но оно пока так и не найдено. Решаю проблему с вычислением, получаю проблему с вводом, решаю проблему с вводом, слетает вычисление. Файл с примером простой, но даже на нем не могу сделать так, что бы работало. Данные должны вводиться, как в ячейку, так и через диалоговое окно. А задача еще и ограничить ввод, что бы через форму диалогового окна можно было вводить только цифры и одну запятую. Еще и ошибки отфильтровать, что бы не слетал макрос в случае некорректного ввода, как в ячейку, так и в TextBox.

Автор - Stork4ever
Дата добавления - 10.09.2017 в 21:15
KuklP Дата: Воскресенье, 10.09.2017, 21:43 | Сообщение № 14
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
А так?
[vba]
Код
Private Sub TextBox1_Change()
    If IsNumeric(Replace(Replace(TextBox1, ",", ""), ".", "")) Then
        Sheets("Лист1").Range("A1") = Replace(TextBox1, ",", ".")
    Else
        TextBox1 = ""
    End If
End Sub

Private Sub TextBox2_Change()
    If IsNumeric(Replace(Replace(TextBox2, ",", ""), ".", "")) Then
        Sheets("Лист1").Range("A2") = Replace(TextBox2, ",", ".")
    Else
        TextBox2 = ""
    End If
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеА так?
[vba]
Код
Private Sub TextBox1_Change()
    If IsNumeric(Replace(Replace(TextBox1, ",", ""), ".", "")) Then
        Sheets("Лист1").Range("A1") = Replace(TextBox1, ",", ".")
    Else
        TextBox1 = ""
    End If
End Sub

Private Sub TextBox2_Change()
    If IsNumeric(Replace(Replace(TextBox2, ",", ""), ".", "")) Then
        Sheets("Лист1").Range("A2") = Replace(TextBox2, ",", ".")
    Else
        TextBox2 = ""
    End If
End Sub
[/vba]

Автор - KuklP
Дата добавления - 10.09.2017 в 21:43
Stork4ever Дата: Воскресенье, 10.09.2017, 22:38 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Так очень странно работает. Не дает ввести запятую с последовательно набирая число в поле TextBox. Но дает ее вставить в существующее число.
Например, пытаюсь набрать 12,36. Набирает 1236. Потом (после сохранения) между 12 и 36 могу вставить запятую. Но сразу набрать число с запятой не получается.
 
Ответить
СообщениеТак очень странно работает. Не дает ввести запятую с последовательно набирая число в поле TextBox. Но дает ее вставить в существующее число.
Например, пытаюсь набрать 12,36. Набирает 1236. Потом (после сохранения) между 12 и 36 могу вставить запятую. Но сразу набрать число с запятой не получается.

Автор - Stork4ever
Дата добавления - 10.09.2017 в 22:38
KuklP Дата: Воскресенье, 10.09.2017, 22:47 | Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Это не мой код. Прогоняйте пошагово, мой код не меняет текстбокс пока не введены буквы и др. символы. См. скрин, вводил последовательно.
К сообщению приложен файл: 6660436.gif (35.3 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЭто не мой код. Прогоняйте пошагово, мой код не меняет текстбокс пока не введены буквы и др. символы. См. скрин, вводил последовательно.

Автор - KuklP
Дата добавления - 10.09.2017 в 22:47
Stork4ever Дата: Воскресенье, 10.09.2017, 23:04 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Не работает.

Во-первых, при попытке ввести значение в ячейку вместо запятой ставится точка и вылезает ошибка макроса.
Во-вторых, при вводе числа с запятой в TextBox, запятая просто не ставится. После сохранения числа без запятой, запятую можно вставить в нужное место.

Погоняйте сами на своем компьютере. По вводите числа и в ячейку и в textbox.


Сообщение отредактировал Stork4ever - Воскресенье, 10.09.2017, 23:05
 
Ответить
СообщениеНе работает.

Во-первых, при попытке ввести значение в ячейку вместо запятой ставится точка и вылезает ошибка макроса.
Во-вторых, при вводе числа с запятой в TextBox, запятая просто не ставится. После сохранения числа без запятой, запятую можно вставить в нужное место.

Погоняйте сами на своем компьютере. По вводите числа и в ячейку и в textbox.

Автор - Stork4ever
Дата добавления - 10.09.2017 в 23:04
KuklP Дата: Воскресенье, 10.09.2017, 23:09 | Сообщение № 18
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Ну-ка, покажите мне скрин ошибки на моем файле. И что значит
После сохранения числа без запятой
К сообщению приложен файл: _Test2.xls (70.5 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНу-ка, покажите мне скрин ошибки на моем файле. И что значит
После сохранения числа без запятой

Автор - KuklP
Дата добавления - 10.09.2017 в 23:09
Stork4ever Дата: Воскресенье, 10.09.2017, 23:25 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
В выложенном файле Вы отключили обратную связь с диалоговым окном. Поэтому ошибка не возникает.
1. Если ввести число в ячейку, то в textbox оно не попадает.
2. В texbox значения вводятся не с запятой, а с точкой.

Т.о. получается, что из диалога значения в ячейку вносятся, хотя в поле textbox они отображаются с точкой, а при вводе числа в ячейку в textbox значение ячейки не подхватывается.
К сообщению приложен файл: 7890754.png (119.7 Kb)
 
Ответить
СообщениеВ выложенном файле Вы отключили обратную связь с диалоговым окном. Поэтому ошибка не возникает.
1. Если ввести число в ячейку, то в textbox оно не попадает.
2. В texbox значения вводятся не с запятой, а с точкой.

Т.о. получается, что из диалога значения в ячейку вносятся, хотя в поле textbox они отображаются с точкой, а при вводе числа в ячейку в textbox значение ячейки не подхватывается.

Автор - Stork4ever
Дата добавления - 10.09.2017 в 23:25
Stork4ever Дата: Воскресенье, 10.09.2017, 23:29 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Ну и можно ввести ошибочное значение и получить ошибку
К сообщению приложен файл: 6083860.jpg (21.5 Kb)
 
Ответить
СообщениеНу и можно ввести ошибочное значение и получить ошибку

Автор - Stork4ever
Дата добавления - 10.09.2017 в 23:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » TextBox и разделитель десятичных дробей (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!