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

Вход

Регистрация

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

 

= Мир MS Excel/Тип данных с дробной частью через точку - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Тип данных с дробной частью через точку (Макросы/Sub)
Тип данных с дробной частью через точку
Сергей13 Дата: Пятница, 15.03.2019, 18:43 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте.
Ребята, как изменить существующий тип данных, в предоставленном коде ниже, дабы в текстовое поле было возможно вносить целые числа и числа с дробной частью через точку, типа раздел подраздел…
[vba]
Код
Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой
NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой
[/vba]
 
Ответить
СообщениеЗдравствуйте.
Ребята, как изменить существующий тип данных, в предоставленном коде ниже, дабы в текстовое поле было возможно вносить целые числа и числа с дробной частью через точку, типа раздел подраздел…
[vba]
Код
Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой
NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой
[/vba]

Автор - Сергей13
Дата добавления - 15.03.2019 в 18:43
RAN Дата: Пятница, 15.03.2019, 19:08 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5052
Репутация: 1004 ±
Замечаний: 0% ±

2010
1. Dim NumberSize As String
2. Изменить системные разделители на буржуйские.
3. ??? Вроде и нет?

Кажется, не правильно понял.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 15.03.2019, 19:11
 
Ответить
Сообщение1. Dim NumberSize As String
2. Изменить системные разделители на буржуйские.
3. ??? Вроде и нет?

Кажется, не правильно понял.

Автор - RAN
Дата добавления - 15.03.2019 в 19:08
bmv98rus Дата: Пятница, 15.03.2019, 19:21 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2156
Репутация: 366 ±
Замечаний: 20% ±

Excel 2013/2016
Сергей13, а никак, нужно просто при вводе отсекать некорректные формы.


Замечательный медведь, процентов на 20.
 
Ответить
СообщениеСергей13, а никак, нужно просто при вводе отсекать некорректные формы.

Автор - bmv98rus
Дата добавления - 15.03.2019 в 19:21
RAN Дата: Пятница, 15.03.2019, 19:27 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5052
Репутация: 1004 ±
Замечаний: 0% ±

2010
Типа так. Ввод только целых чисел и десятичных дробей.
[vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Dim dsep$: dsep = Me.ActiveControl.Value
    KeyAscii = DoubleBox_KeyPress(KeyAscii, dsep)
End Sub
Function DoubleBox_KeyPress(ByVal KeyAsci As Integer, dsep As String)
    Select Case KeyAsci
    Case 48 To 57: DoubleBox_KeyPress = KeyAsci
    Case 46, 44: If dsep Like ("*,*") Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 44    '[","."]
    Case Else: DoubleBox_KeyPress = 0
    End Select
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТипа так. Ввод только целых чисел и десятичных дробей.
[vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Dim dsep$: dsep = Me.ActiveControl.Value
    KeyAscii = DoubleBox_KeyPress(KeyAscii, dsep)
End Sub
Function DoubleBox_KeyPress(ByVal KeyAsci As Integer, dsep As String)
    Select Case KeyAsci
    Case 48 To 57: DoubleBox_KeyPress = KeyAsci
    Case 46, 44: If dsep Like ("*,*") Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 44    '[","."]
    Case Else: DoubleBox_KeyPress = 0
    End Select
End Function
[/vba]

Автор - RAN
Дата добавления - 15.03.2019 в 19:27
Сергей13 Дата: Пятница, 15.03.2019, 19:33 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus,
Ясно что никак, не ясно как отловить то, что необходимо отсекать…
А если изменить на тип данных даты, а затем при вводе в ячейку применяя апостроф менять на текстовый получая нужный результат?
 
Ответить
Сообщениеbmv98rus,
Ясно что никак, не ясно как отловить то, что необходимо отсекать…
А если изменить на тип данных даты, а затем при вводе в ячейку применяя апостроф менять на текстовый получая нужный результат?

Автор - Сергей13
Дата добавления - 15.03.2019 в 19:33
Сергей13 Дата: Пятница, 15.03.2019, 19:34 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Момент...
 
Ответить
СообщениеRAN, Момент...

Автор - Сергей13
Дата добавления - 15.03.2019 в 19:34
Сергей13 Дата: Пятница, 15.03.2019, 20:16 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Я так понял что дробные вводятся только через запятую?
Не уловил функционального отличия Вашего кода от данной рабочей процедуры
[vba]
Код
Sub NumberNak() 'Ввод раздела
    On Error Resume Next 'Обработчик ошибок
    Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой
    NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой
End Sub
[/vba]
[vba]
Код
Private Sub TxbNumberNak_Change() 'Поле ввода раздела
    Call NumberNak 'Переменная - Ввод раздела
End Sub
[/vba]
Необходимо чтобы была возможность вносить целые числа и числа с дробной частью именно через точку, впоследствии это будет вноситься в ячейку и обозначать от введенного раздел или подраздел.


Сообщение отредактировал Сергей13 - Пятница, 15.03.2019, 21:42
 
Ответить
СообщениеRAN, Я так понял что дробные вводятся только через запятую?
Не уловил функционального отличия Вашего кода от данной рабочей процедуры
[vba]
Код
Sub NumberNak() 'Ввод раздела
    On Error Resume Next 'Обработчик ошибок
    Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой
    NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой
End Sub
[/vba]
[vba]
Код
Private Sub TxbNumberNak_Change() 'Поле ввода раздела
    Call NumberNak 'Переменная - Ввод раздела
End Sub
[/vba]
Необходимо чтобы была возможность вносить целые числа и числа с дробной частью именно через точку, впоследствии это будет вноситься в ячейку и обозначать от введенного раздел или подраздел.

Автор - Сергей13
Дата добавления - 15.03.2019 в 20:16
bmv98rus Дата: Пятница, 15.03.2019, 20:34 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2156
Репутация: 366 ±
Замечаний: 20% ±

Excel 2013/2016
Сергей13, давайте забудем о том что есть типы данных и просто определим, что может быть введено и в каком виде. Если говорить о пунктах, то
1 , 1.1, 1.1.1 …. так?


Замечательный медведь, процентов на 20.
 
Ответить
СообщениеСергей13, давайте забудем о том что есть типы данных и просто определим, что может быть введено и в каком виде. Если говорить о пунктах, то
1 , 1.1, 1.1.1 …. так?

Автор - bmv98rus
Дата добавления - 15.03.2019 в 20:34
Сергей13 Дата: Пятница, 15.03.2019, 20:38 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus,
От 0 до целых 100000
а с дробными
От 1.1 до 100000.100
Другой ввод данных запрещен.


Сообщение отредактировал Сергей13 - Пятница, 15.03.2019, 20:55
 
Ответить
Сообщениеbmv98rus,
От 0 до целых 100000
а с дробными
От 1.1 до 100000.100
Другой ввод данных запрещен.

Автор - Сергей13
Дата добавления - 15.03.2019 в 20:38
RAN Дата: Пятница, 15.03.2019, 21:02 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5052
Репутация: 1004 ±
Замечаний: 0% ±

2010
Цитата Сергей13, 15.03.2019 в 20:16, в сообщении № 7 ()
Я так понял что дробные вводятся только через запятую?

Именно так. И попробуйте ввести что-либо иное. Можете попробовать через точку.
Цитата Сергей13, 15.03.2019 в 20:16, в сообщении № 7 ()
Не улови функционального отличия Вашего кода от данной рабочей процедуры

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


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата Сергей13, 15.03.2019 в 20:16, в сообщении № 7 ()
Я так понял что дробные вводятся только через запятую?

Именно так. И попробуйте ввести что-либо иное. Можете попробовать через точку.
Цитата Сергей13, 15.03.2019 в 20:16, в сообщении № 7 ()
Не улови функционального отличия Вашего кода от данной рабочей процедуры

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

Автор - RAN
Дата добавления - 15.03.2019 в 21:02
Сергей13 Дата: Пятница, 15.03.2019, 21:36 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Насколько понял в параметрах excel (что нежелательно) и в коде Like ("*.*")
Если да, то менял, но вводится только запятая, в добавок запятую можно ввести перед числовым значением, что тоже не есть нежелательно...
Ребята спасибо, оставлю как есть, не столь критично, пусть будет запятая.


Сообщение отредактировал Сергей13 - Пятница, 15.03.2019, 21:45
 
Ответить
СообщениеRAN, Насколько понял в параметрах excel (что нежелательно) и в коде Like ("*.*")
Если да, то менял, но вводится только запятая, в добавок запятую можно ввести перед числовым значением, что тоже не есть нежелательно...
Ребята спасибо, оставлю как есть, не столь критично, пусть будет запятая.

Автор - Сергей13
Дата добавления - 15.03.2019 в 21:36
RAN Дата: Пятница, 15.03.2019, 22:17 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5052
Репутация: 1004 ±
Замечаний: 0% ±

2010
Цитата Сергей13, 15.03.2019 в 21:36, в сообщении № 11 ()
Насколько понял в параметрах excel (что нежелательно)

Тяжелый случай.
[vba]
Код
Case 46, 44: If dsep Like ("*.*") Or Len(dsep) = 0 Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 46    '[","."]
[/vba]
К сообщению приложен файл: 3974662.xlsm(14.8 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата Сергей13, 15.03.2019 в 21:36, в сообщении № 11 ()
Насколько понял в параметрах excel (что нежелательно)

Тяжелый случай.
[vba]
Код
Case 46, 44: If dsep Like ("*.*") Or Len(dsep) = 0 Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 46    '[","."]
[/vba]

Автор - RAN
Дата добавления - 15.03.2019 в 22:17
Сергей13 Дата: Пятница, 15.03.2019, 23:32 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 222
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Не знаю где Вы еще точку поставили, но он работает и не дает возможность ввести знак перед числом.
Нюанс еще был с вводом набранного значения в ячейку, происходил перевод в числовое дробное.
Решил с помощью апострофа переводить в текстовый, нормально, числовой не нужен.
[vba]
Код
InvoiceSheet.Range("AB4") = "'" & FormInvoice.TxbNumberNak.Value
[/vba]
RAN, Благодарю!


Сообщение отредактировал Сергей13 - Суббота, 16.03.2019, 13:51
 
Ответить
СообщениеRAN, Не знаю где Вы еще точку поставили, но он работает и не дает возможность ввести знак перед числом.
Нюанс еще был с вводом набранного значения в ячейку, происходил перевод в числовое дробное.
Решил с помощью апострофа переводить в текстовый, нормально, числовой не нужен.
[vba]
Код
InvoiceSheet.Range("AB4") = "'" & FormInvoice.TxbNumberNak.Value
[/vba]
RAN, Благодарю!

Автор - Сергей13
Дата добавления - 15.03.2019 в 23:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Тип данных с дробной частью через точку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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