|
|
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Вообщем такая проблемка, эксель ведь сам понимает 2 типа текст и число. Дата, например, для него тоже число 1 = 01.01.1900. Так вот, есть событие у листа Worksheet_Change, которое в параметре Target мне предоставляет ячейку с уже изменённым значением, т.е. если ячейка имеет формат даты, то при вводе в неё 01-01-01 я получаю Target.Value : 01.01.2001 Target.Formula : "36892" Могу ли я как то получить именно значение 01-01-01? Я знаю, что можно просто формат ячейки поменять на текстовый и всё супер, получаю Target.Value = "01-01-01" и Target.Formula = "01-01-01", но мне просто необходимо, чтоб оставался формат Датой. Есть какие-нибудь варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 17:44 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiN, поставьте формат ячейки ДД-ММ-ГГ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 19:18 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
kuklp, я так понял, автору нужен "сырой ввод", то есть то, что вел пользователь, а это он привел как пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 19:25 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, да, именно, как вы выразились, "сырой ввод нужен", чтобы я мог обработать текст до нажатия Enter (и прочих клавиш, позволяющие окончить редактирование в текущей ячейке). Я просто программировал на C# и при написании Win-формы иногда использовал событие Control.TextChanged. Вот я и подумал, раз C# и VB довольно-таки схожи, может тогда и что-нибудь подобное было бы в VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:07 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiN, Событий в Экселе маловато ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:21 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiN, Просто VBA наверняка нет, т.к. в режиме редактирования ячейки не работают никакие события VBA. Можно попробовать в обход через Windows API, но стоит ли овчинка выделки. Какова конечная цель данного экзерсиса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:25 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Собственно мне нужно это для работы. В экселевском файле большая таблица. Я готовлю шаблон, который в последствии передам пользователям. По заполнению шаблона, пользователи отдают заполненный уже шаблон другому человеку, который загружает данные в 1С. В 1Ске мы конечно сделали обработку, которая исправляет всякие недочеты пользователей, но эти гады будто назло кучу ошибок делают, т.е. в неправильном формате вводят данные, что приводит к потере загружаемых данных. Поэтому мне необходимо проверять ячейки на правильность вводимого значения в соответствии со столбцом, к которому относится ячейка. Как вы понимаете, мне нужно проверять ячейки разных форматов, а не только дату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:43 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Тогда лучше форму сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:47 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Наверно мне придется использовать тогда просто текстовый формат ячеек и путём перебора каждого символа убирать ненужное, добавлять нужное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:51 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Выводить форму для ввода значения? Пользователи убьются об стену вводить так и пошлют меня куда подальше))) В таблице 37 столбцов и до 300 строк надо вводить))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:54 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiN, Вам же Шокер посоветовал - "сделайте форму ввода". И там для всех контролов есть бОльшее количество событий, включая нужные вам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:58 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiNНаверно мне придется использовать тогда просто текстовый формат ячеек и путём перебора каждого символа убирать ненужное, добавлять нужное...главное, начал ты с того, что так нелья.... А зачем перебирать? Если выражение является датой (IsDate) можно преобразовать его в дату (CDate), а потом отформатировать (Format$) как требуется. А если не является датой - ругаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 20:59 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Shocker.Proглавное, начал ты с того, что так нелья.... Просто придётся ещё обработку тогда переделывать для загрузки данных в 1С. в принципе я еще покручу CDate и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 21:21 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Shocker.ProTёMochkiNНаверно мне придется использовать тогда просто текстовый формат ячеек и путём перебора каждого символа убирать ненужное, добавлять нужное...главное, начал ты с того, что так нелья.... А зачем перебирать? Если выражение является датой (IsDate) можно преобразовать его в дату (CDate), а потом отформатировать (Format$) как требуется. А если не является датой - ругаться. IsDate - довольно ветренная и беспринципная дама :) Я бы держался от нее подальше. Если пользователи производят ввод данных поячеечно и нет риска использования ими копирования данных из диапазона в диапазон, то есть еще вариант с правилами проверки. Еще можно запретить вход в ячейку, а по клику вызывать ActiveX календарь. Я все же сторонник уже предложенного варианта с формой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 21:38 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
авторМогу ли я как то получить именно значение 01-01-01? Я знаю, что можно просто формат ячейки поменять на текстовый и всё супер, получаю Target.Value = "01-01-01" и Target.Formula = "01-01-01", но мне просто необходимо, чтоб оставался формат Датой. Есть какие-нибудь варианты? На этот вопрос мой ответ ИМХО самый простой, надежный и малозатратный. В форму тоже можно Бог знает чего навводить и на ячейку можно навесить миллион проверок. Но вопрос звучал - как при правильном вводе получить правильное отображение, чтоб введенное оставалось датой :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 22:31 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Еще вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 22:38 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
На самом деле можно еще эмулировать правило проверки с пом. обработчика события Worksheet_Change и проверки каждой ячейки в диапазоне Target например для дат с пом. Application.IsNumber(), применяя Application.Undo и соотв. MsgBox в случае неверного значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 23:39 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
а можно как то маску ввода сформировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 23:42 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiN, Пока нет :(, но предложение в MS отправлено. Ждем-с ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 23:50 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
KL (XL), Пока можно только так, но правила проверки можно обойти копированием в проверяемую ячейку из другой ячейки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2012, 23:56 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Народ, вообщем я пришел к такому выходу: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Ну это часть кода, мож кому понадобится. При чём формат ячеек Дата. что делает? при вводе 121212 12,12,12 12,12,2012 12-12-12 12-12-2012 12/12/12 12/12/2012 значение ячейки поменяется на 12.12.2012 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2012, 00:49 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
TёMochkiN, а что если вводить дату в ячейку с текстовым форматом ? а затем после перехвата и всех проверок введенного текстового образа даты если эта дата оказадась нормальная то переводить формат этой ячейки в "ДАТА" а если нет - то выдавать ошибку и ждать повторного ввода ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2012, 11:36 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
> Автор: TёMochkiN > Пользователи убьются об стену вводить так и пошлют меня куда подальше))) В таблице 37 столбцов и до 300 строк > надо вводить))) У меня пользователи не убиваются. А переделывают. Я проверяю что и как и если что-то не совпадает с ожидаемым, просто показываю ошибку > при вводе .... > значение ячейки поменяется на 12.12.2012 У меня программа _ничего_не_делает_, только показывает строку, столбец и не понравившиеся данные. И пользователь _сам_ исправляет. Я не додумываю за пользователя что он хотел мне сказать. И тебе не советую. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2012, 13:25 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Игорь ГорбоносУ меня программа _ничего_не_делает_, только показывает строку, столбец и не понравившиеся данные. И пользователь _сам_ исправляет. Я не додумываю за пользователя что он хотел мне сказать. И тебе не советую.Игорь, отличный подход! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2012, 13:36 |
|
||
|
Как получать данные из ячейки во время их ввода в неё?
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, я не исправляю ошибки пользователя, а ограничиваю его от ввода неверных данных. Только благодаря строгой типизации данных, мы получаем правильный документ. Мы программисты должны предоставить пользователю то, что мы хотим потом получить от него. Если организация большая, вы не сможете до каждого донести, какие значения будут уместны в каком-либо столбце, а в каком нет. Тем более, когда тебе должностное лицо повыше ставит такую задачу, ты не можешь сказать "нет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2012, 17:28 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37626077&tid=2176093]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 415ms |

| 0 / 0 |
