Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите - преобразование текста в форме 
:(
    Опции темы
abyrval
Дата 16.1.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



подскажите как сделать в форме vba ms excel :
есть textbox куда надо ввести номер заявки (например 01234F или 00001F)
есть ли возможность и/или как это реализовать -  ввести просто "1234", которое автоматически переведется в "01234F", проблема в том что количество вводимых символов может быть разное, т.е. нужно просчитать кол-во введенных символов и добавить соответственно недостающие части.
к сожалению в хелпах и фк таких разделов нет, а штудировать учебники.... smile  smile 
заранее спасибо
PM MAIL   Вверх
bilya
Дата 17.1.2008, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



Да все делается.  
Общий принцип такой:
Код

myStr = Left("00000", 5 - Len(TextBox1.Text)) & TextBox1.Text & "F"

PM MAIL   Вверх
bilya
Дата 17.1.2008, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



А это работает в одном текстбоксе при наборе номера
Код

Private flag As Boolean ' эта строка должна быть в самом верху модуля формы

Private Sub TextBox1_Change()
  If flag = False Then Vvod
End Sub

Public Sub Vvod()
  mystr = TextBox1.Text
  If InStrRev(mystr, "F") <> 0 Then mystr = Left(mystr, Len(mystr) - 1)
  Do While InStr(1, mystr, "0") = 1
    mystr = Mid(mystr, 2)
  Loop
  flag = True
  If Len(mystr) > 5 Then mystr = Left(mystr, 5)
  TextBox1.Text = Left("00000", 5 - Len(mystr)) & mystr & "F"
  TextBox1.SelStart = Len(TextBox1.Text) - 1
  flag = False
End Sub

 smile 
PM MAIL   Вверх
Akina
Дата 17.1.2008, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(bilya @  17.1.2008,  04:46 Найти цитируемый пост)
Общий принцип такой

Это как раз весьма частный принцип. Общий - это форматирование по маске.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bilya
Дата 17.1.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



По маске в Ехселе...
 smile 
PM MAIL   Вверх
Akina
Дата 17.1.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



bilya, я о функции Format и аналогичных


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
abyrval
Дата 17.1.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



Цитата(bilya @ 17.1.2008,  03:46)
Да все делается.  

спасибо огромное, за принцип и за реализацию, на РЕП не хватает постов к сожалению)

может тогда еще подскажешь
есть комбо бокс в форме:
Код

Private Sub ComboBox3_Enter()
UserForm1.ComboBox3.SetFocus
Worksheets("списки").Activate
Dim Диапазон As String
Dim n As Integer
n = Application.CountA(Range("c:c"))
Диапазон = "c1:c" & CStr(n)
ComboBox3.RowSource = Диапазон
End Sub

работает отлично, при вводе буквы, предлагает допустимые варианты smile 

а если я вызываю вторую форму из первой
Код

Private Sub TextBox7_Change()
If TextBox7.Value = "0" Then
UserForm3.Show
UserForm3.ComboBox1.SetFocus
.....
End If
End Sub


В вызываемой форме такие же комбобоксы (тем же кодом оформленные), но при вводе буквы допустимые варианты не предлагаются, в чем загвоздка? вроде же все тоже самое...

Добавлено через 10 минут и 6 секунд
bilya
bilya
Цитата(Akina @  17.1.2008,  11:42 Найти цитируемый пост)
я о функции Format и аналогичных


про маску знаю
к сожалению форму делаю не только для заявок, поэтому изменять ее в экселе по маске (отдельно от всего) не очень интересно((
PM MAIL   Вверх
bilya
Дата 17.1.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



Akina, ваша правда, подкачала формулировка...  smile 
Код

  myStr = Format(TextBox1.Text, "00000F")

abyrval, если правильно понял, вам нужно у комбобоксов установить свойство MatchEntry = fmMatchEntryFirstLetter. Можно в коде, при инициализации формы
Код

  ComboBox1.MatchEntry = fmMatchEntryFirstLetter


PM MAIL   Вверх
abyrval
Дата 17.1.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



Цитата(bilya @  17.1.2008,  15:28 Найти цитируемый пост)
MatchEntry = fmMatchEntryFirstLetter


дак вот меня и смущает что у меня стоит и в первой и во второй форме MatchEntry = 0 -.......
мистика. епреустановить чего-нбд чтоль smile 
PM MAIL   Вверх
abyrval
Дата 17.1.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



вот даже принт снял - две картинки:
1. настройки
2. результат
 smile 

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  ____________.rar 81,83 Kb
PM MAIL   Вверх
bilya
Дата 17.1.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



Попытался смоделировать вашу ситуацию (с  _Change, .SetFocus на всякий случай) - у меня работает что с нулем, что с единицей
А не пробовали все таки на UserForm_Initialize прописать эти свойства? 
PM MAIL   Вверх
abyrval
Дата 17.1.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



Цитата(bilya @ 17.1.2008,  17:04)
Попытался смоделировать вашу ситуацию (с  _Change, .SetFocus на всякий случай) - у меня работает что с нулем, что с единицей
А не пробовали все таки на UserForm_Initialize прописать эти свойства?

прописал где только можно, и в UserForm_Initialize, и даже потом в Private Sub ComboBox1_Enter() запихнул...
самое интересное другое - если я запускаю только форму выбора точек (UserForm3) напрямую, то подстановка работает,
если вызываю ее "0" из userform1, то нет... клиника
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.