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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2009, 14:35   #1
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию Вставка числа из формы в ячейку

1. Как сделать чтобы из формы в ячейку при любом вводе:
а. 123,05
б. 123.05
в ячейку вставлялось именно число, а не текст??

2. как ограничить число вводимых символов после запятой(точки) до 2?
Вложения
Тип файла: rar Пример.rar (11.3 Кб, 46 просмотров)
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Старый 16.03.2009, 14:55   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно использовать примерно такой код для обработчика событий текстового поля:
Код:
Private Sub TextBox1_Change()
    Me.ДобавитьЧисло.Enabled = Me.TextBox1.Text <> "" ' делаем кнопку недоступной при пустом поле ввода
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    txt = Me.TextBox1    ' читаем текст из поля (для недопущения ввода двух и более запятых)
    If InStr(1, txt, ",") > 0 And Len(txt) - InStr(1, txt, ",") = 2 Then KeyAscii = 0  ' только 2 цифры после запятой
    Select Case KeyAscii
        Case 8:    ' нажат Backspace - ничего не делаем
        Case 44: KeyAscii = IIf(InStr(1, txt, ",") > 0, 0, 44)    ' если запятая уже есть - отменяем ввод символа
        Case 46: KeyAscii = IIf(InStr(1, txt, ",") > 0, 0, 44)    ' заменяем при вводе точку на запятую
        Case 48 To 57    ' если введена цифра  - ничего не делаем
        Case Else: KeyAscii = 0    ' иначе отменяем ввод символа
    End Select
End Sub

Private Sub ДобавитьЧисло_Click()
    ' пишем новое число в следующую пустую ячейку 1-го столбца
    Worksheets("База").Range("A65000").End(xlUp).Offset(1).Value = Replace(TextBox1.Text, ",", ".")
    Me.TextBox1.SetFocus
End Sub
Можно реализовать добавление числа по нажатию Enter.
Добавочный код будет приблизительно таким: (но кроме кода придётся ещё кое-что подправить)
Код:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 And Me.TextBox1.Text <> "" Then ДобавитьЧисло_Click
End Sub
Пример во вложении:
Вложения
Тип файла: rar Пример ввода чисел через форму.rar (12.3 Кб, 41 просмотров)

Последний раз редактировалось EducatedFool; 16.03.2009 в 15:54.
EducatedFool вне форума Ответить с цитированием
Старый 16.03.2009, 16:25   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ограничить количество цифр после запятой можно функцией Round(<число>,<количество знаков после запятой>)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 19.03.2009, 03:26   #4
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

спасибо, работает))) там будут еще вопросы, но позже))
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка в одну ячейку ivkoa Microsoft Office Excel 9 22.08.2008 14:16
При вставке 20-значного числа в ячейку происходит округление. Как избавиться? urri_k Microsoft Office Excel 9 25.07.2008 23:10
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
Вставка рисунка в ячейку DBGrid Aleksandr Компоненты Delphi 5 25.06.2007 16:25