Страницы: 1
RSS
Форма ввода The J-Walk Enhanced Data Form, Надстройка The J-Walk Enhanced Data Form преобразовывает числа в дати
 
Приветствую!!!
Помогите решить.
Недавно взял на вооружение надстройку The J-Walk Enhanced Data Form по адресу: https://web.archive.org/web/20190214023127/http://spreadsheetpage.com/index.php/dataform/home/   (на данный момент сайт автора выкупили).
При вводе через данную форму дробных чисел типа 5,7 12,2 0,4 и похожих на лист вносятся данные формата Дата 9/1/1965. Предварительная настройка форматов ячеек таблицы не спасает. После ввода данных надстройка меняет формат ячейки. Я так понимаю что форма ввода автоматически распознает форматы и меняет их.
Как отключить автоматическое присвоение формата ячеек не знаю
 
отключите настройку
введите те же значения
смотрите что получилось
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Исправление в таблице в ручную (ввод тех же значений )
ошибка Числло введено как текст - но правильно отображается.
Хотелось бы через форму...

А можно в Надстройке отключить присвоение формата ячейки?
 
Цитата
The VBA project is protected, but you can purchase the password for US $15.00.
Проект VBA защищен, пароль  - всего $15. Купите пароль, откроем, посмотрим
 
Можно перехватить макросом событие ввода данных и преобразовать, как нужно, но это уже не про форму
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
У прикреплённого файла поменьше код открыт
 
Цитата
Семен Фабриков написал:
После ввода данных надстройка меняет формат ячейки. Я так понимаю что форма ввода автоматически распознает форматы и меняет их.
Посмотрел текст надстройки. В части учета региональных настроек - ошибка на ошибке.

Надстройка копирует форматы ячеек из предыдущей заполненной строки. При присвоении значения свойства Value ячейке Excel может изменить формат ячейки (подробности в этой теме)

Попробуйте в модуле формы FormMain закомментировать (удалить) указанные ниже строки:
Код
                    If IsRealDate(ctl.Text) Then
                        If IsDate(DateValue(ctl.Text)) Then
                            TestCell.Value = CDate(ctl.Text)
                        End If
                    Else
                        TestCell.Value = ctl.Text
                    End If
и в этом месте добавить строку:
Код
                    TestCell.FormulaLocal = ctl.Text   ' New!!
Владимир
 
Цитата
sokol92 написал: В части учета региональных настроек - ошибка на ошибке.
И такое продается? )
 
Уже нет (см. #1). Кстати, автор - гуру Джон Уокенбах (no comments). Замечено - некоторым программистам тяжело осознать, что есть другие локали, кроме en_US.
Изменено: sokol92 - 27.01.2022 18:02:50
Владимир
 
Цитата
sokol92: гуру Джон Уокенбах (no comments)
у него в книгах полно неточностей, однобокого представления иняормации (говорит, делайте вот так, а о том, что очень часто это может дать НЕ тЕ результаты не говорит) и откровенных ошибок
Мыльный разрекламированный пузырь, одним словом. А я его советовал поначалу…
Изменено: Jack Famous - 27.01.2022 18:07:30
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
Попробуйте в модуле формы FormMain закомментировать (удалить) указанные ниже строки:
Спасибо за совет. Закоментировал и вставил строку. Не помогло.
Буду учить свойства Value ячейки Excel.
Может есть что-то похожее на Enhanced Data Form но с правильным переносом значений на лист. Стандартная Форма... не справляется с 124 столбцами.
Изменено: Семен Фабриков - 27.01.2022 23:57:34
 
Цитата
Семен Фабриков: Enhanced Data Form
ссылка ведёт сюда же
Как вариант - закажите форму по всем своим хотелкам в платной ветке
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Семен Фабриков написал:
Закоментировал и вставил строку. Не помогло.
Из любопытства давайте проверим вместе - см. вложение.
Владимир
 
Да! Заработало. Наверное я что то не так сделал.
Есть нюанс:
надстройка после закрытия файла отключается (пропадает);
после переходов кнопками навигации Назад и Вперед ячейки, с форматами отображения значений Общий и Число, заполненные  значением 0,4 (с запятой) меняются на 0.4 (с точкой). Зато с форматом отображения значений Текст все выходит отлично за что Вам большое спасибо.
Даже в таком состоянии надстройка меня пока устроит.

Сколько будет стоить перенастроить иле переделать форму под наши регионы. А то у них есть, а у нас нет...
 
Сколько будет стоить перенастроить иле переделать форму под наши регионы. А то у них есть, а у нас нет...
 
Цитата
написал:
значением 0,4 (с запятой) меняются на 0.4 (с точкой)
Оказывается программа не только неправильно пишет, но и неправильно читает (переносит значения из ячеек в форму).
Корень зла - в конструкции (кстати, интересная задача для любителей Excel):

Код
ctl = CurrentCell
(здесь ctl - TextBox, CurrentCell - ячейка).
В этом месте исправил, смотрите (проверяйте надстройку) дальше.

После закрытия файла (но не Excel) настройка должна быть на месте: Menu / Данные и в конце ленты J-Walk...
Изменено: sokol92 - 29.01.2022 18:57:40
Владимир
 
Цитата
написал:
После закрытия файла (но не Excel) настройка должна быть на месте: Menu / Данные и в конце ленты J-Walk...
Возможно исправить пропадание надстройки после закрытия Excel?
 
Любой надстройке можно обеспечить постоянную прописку - при (обычном) старте Excel будет также открываться и надстройка. См., например, статью на сайте Дмитрия Щербакова "Подключение/отключение надстроек", или статью Николая Павлова на этом сайте Как создать свою надстройку для Microsoft Excel.
Изменено: sokol92 - 04.02.2022 16:37:05
Владимир
 
не получается... не могу скопировать код в новый файл надстройки...
Страницы: 1
Наверх