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

Вход

Регистрация

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

 

= Мир MS Excel/После редактирования строки в таблице не корректны данные - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » После редактирования строки в таблице не корректны данные (Макросы/Sub)
После редактирования строки в таблице не корректны данные
lebensvoll Дата: Понедельник, 25.07.2016, 16:54 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
Добрый день уважаемые форумчане!!!
Благодаря RAN, sboy, в теме (кросс: My WebPage)
было достигнуто решение (которое честно сказать, для меня понимается все же с трудом и частично) но возникли трудности.
после того как оператор вносит данные они сохраняются как нужно. Но когда оператор выбирает редактировать выбранную строку то после сохранения некоторые ячейки искажаются ((((
1. Время "Примечание = Время прибытия" почему то показывает в числах хотя формат ячеек стоит время. Но она также и на форме показывает не как было занесено а как числа (((
2. Графа столбца "Погрешность материала в % к фактическому весу" там должна срабатывать формула
Код
=ЕСЛИ([@[Вес принятый к БУ по документам поставщика]]>[@[Вес материала на весовой, т.]];[@[Вес принятый к БУ по документам поставщика]]-[@[Вес материала на весовой, т.]];0)
и когда оператор вносит данные то она работает, но когда начинает редактировать то вся графа ЗНАЧ ((((((
3. Если пытаешься изменить завод РБУ-1 на РБУ-2 то при сохранении остаются данные теже самые которые были изначально (((((
Помогите решить данную проблему, спасибо вам сразу же огромное!!!
К сообщению приложен файл: 7558376.xlsb(74Kb)


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvoll - Вторник, 26.07.2016, 10:12
 
Ответить
СообщениеДобрый день уважаемые форумчане!!!
Благодаря RAN, sboy, в теме (кросс: My WebPage)
было достигнуто решение (которое честно сказать, для меня понимается все же с трудом и частично) но возникли трудности.
после того как оператор вносит данные они сохраняются как нужно. Но когда оператор выбирает редактировать выбранную строку то после сохранения некоторые ячейки искажаются ((((
1. Время "Примечание = Время прибытия" почему то показывает в числах хотя формат ячеек стоит время. Но она также и на форме показывает не как было занесено а как числа (((
2. Графа столбца "Погрешность материала в % к фактическому весу" там должна срабатывать формула
Код
=ЕСЛИ([@[Вес принятый к БУ по документам поставщика]]>[@[Вес материала на весовой, т.]];[@[Вес принятый к БУ по документам поставщика]]-[@[Вес материала на весовой, т.]];0)
и когда оператор вносит данные то она работает, но когда начинает редактировать то вся графа ЗНАЧ ((((((
3. Если пытаешься изменить завод РБУ-1 на РБУ-2 то при сохранении остаются данные теже самые которые были изначально (((((
Помогите решить данную проблему, спасибо вам сразу же огромное!!!

Автор - lebensvoll
Дата добавления - 25.07.2016 в 16:54
wild_pig Дата: Вторник, 26.07.2016, 00:06 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 457
Репутация: 85 ±
Замечаний: 0% ±

2003, 2013
При загрузке времени в контрол, форматировать значение в нужный вид
[vba]
Код
Me.TextBox2 = Format(Cells(iRow, 23), "hh:mm:ss")
[/vba]
При сохранении тоже форматировать значение контрола как дату
[vba]
Код
Cells(ActiveCell.Row, 23) = CDate(Me.TextBox2)
[/vba]
Текст на кнопке выбора даты надо заменить на "Выберите дату"


Сообщение отредактировал wild_pig - Вторник, 26.07.2016, 00:10
 
Ответить
СообщениеПри загрузке времени в контрол, форматировать значение в нужный вид
[vba]
Код
Me.TextBox2 = Format(Cells(iRow, 23), "hh:mm:ss")
[/vba]
При сохранении тоже форматировать значение контрола как дату
[vba]
Код
Cells(ActiveCell.Row, 23) = CDate(Me.TextBox2)
[/vba]
Текст на кнопке выбора даты надо заменить на "Выберите дату"

Автор - wild_pig
Дата добавления - 26.07.2016 в 00:06
wild_pig Дата: Вторник, 26.07.2016, 00:20 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 457
Репутация: 85 ±
Замечаний: 0% ±

2003, 2013
По п.3
Не надо использовать активацию формы. Надо прописать загрузку списков на инициализацию. Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.
 
Ответить
СообщениеПо п.3
Не надо использовать активацию формы. Надо прописать загрузку списков на инициализацию. Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.

Автор - wild_pig
Дата добавления - 26.07.2016 в 00:20
lebensvoll Дата: Вторник, 26.07.2016, 09:11 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

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

как я правильно понял нужно удалить данный код на форме 3
[vba]
Код
Private Sub UserForm_Activate() 'активация выпадающих списков на "UserForm3" при выборе "ComboBox" и "Календаря"
   Me.ComboBox1.RowSource = "Завод"
   Me.ComboBox2.RowSource = "Поставщик"
   Me.ComboBox3.RowSource = "Грузоперевозчик"
   Me.ComboBox4.RowSource = "ВидМатериала"
   Me.ComboBox5.RowSource = "Тара"
   Me.ComboBox6.RowSource = "Номенклатура"
   Me.ComboBox7.RowSource = "ВидЦемента"
   Me.ComboBox8.RowSource = "МашиныПривоза"
   Me.ComboBox9.RowSource = "МестоПриемки"
   Me.MonthView1.Visible = False 'активация календаря
   If Me.Tag = "red" Then Call UserForm_Ini 'активация кода для редактирования выбранной строки
   
End Sub
[/vba]
Так получается (((( но мне кажется тогда не будут активны выпадающие списки!?
СПАСИБО ВАМ ОГРОМНОЕ!!! Коды на дату срабатывают на ура hands


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеwild_pig, доброе утро!!!
Цитата
Не надо использовать активацию формы. Надо прописать загрузку списков на инициализацию. Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.

как я правильно понял нужно удалить данный код на форме 3
[vba]
Код
Private Sub UserForm_Activate() 'активация выпадающих списков на "UserForm3" при выборе "ComboBox" и "Календаря"
   Me.ComboBox1.RowSource = "Завод"
   Me.ComboBox2.RowSource = "Поставщик"
   Me.ComboBox3.RowSource = "Грузоперевозчик"
   Me.ComboBox4.RowSource = "ВидМатериала"
   Me.ComboBox5.RowSource = "Тара"
   Me.ComboBox6.RowSource = "Номенклатура"
   Me.ComboBox7.RowSource = "ВидЦемента"
   Me.ComboBox8.RowSource = "МашиныПривоза"
   Me.ComboBox9.RowSource = "МестоПриемки"
   Me.MonthView1.Visible = False 'активация календаря
   If Me.Tag = "red" Then Call UserForm_Ini 'активация кода для редактирования выбранной строки
   
End Sub
[/vba]
Так получается (((( но мне кажется тогда не будут активны выпадающие списки!?
СПАСИБО ВАМ ОГРОМНОЕ!!! Коды на дату срабатывают на ура hands

Автор - lebensvoll
Дата добавления - 26.07.2016 в 09:11
wild_pig Дата: Вторник, 26.07.2016, 14:57 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 457
Репутация: 85 ±
Замечаний: 0% ±

2003, 2013
как я правильно понял нужно удалить данный код на форме 3

Да нет, просто изменить событие, вместо UserForm_Activate использовать UserForm_Initialize.


Сообщение отредактировал wild_pig - Вторник, 26.07.2016, 14:58
 
Ответить
Сообщение
как я правильно понял нужно удалить данный код на форме 3

Да нет, просто изменить событие, вместо UserForm_Activate использовать UserForm_Initialize.

Автор - wild_pig
Дата добавления - 26.07.2016 в 14:57
RAN Дата: Вторник, 26.07.2016, 17:34 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
постоянно при каждом чихе

Зачем человека пугать?
Разница только при скрытии формы методом Hide.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
постоянно при каждом чихе

Зачем человека пугать?
Разница только при скрытии формы методом Hide.

Автор - RAN
Дата добавления - 26.07.2016 в 17:34
lebensvoll Дата: Вторник, 26.07.2016, 17:44 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
wild_pig, RAN, Спасибо вам огромное!!!
Но Pelena, мне объяснила как следует исправить мои макросы чтоб этого не происходило...
wild_pig,
Цитата
Надо прописать загрузку списков на инициализацию.

[vba]
Код
'Call UserForm_Activate
[/vba]
Во всех своих кодах на всех UserForm 1 и 2 ( а еще файл немного изменил и у меня их добавилось 3 и 4)
и тогда уже не будет происходить
Цитата
Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.

Еще раз СПАСИБО ВАМ ВСЕМ ОГРОМНОЕ


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеwild_pig, RAN, Спасибо вам огромное!!!
Но Pelena, мне объяснила как следует исправить мои макросы чтоб этого не происходило...
wild_pig,
Цитата
Надо прописать загрузку списков на инициализацию.

[vba]
Код
'Call UserForm_Activate
[/vba]
Во всех своих кодах на всех UserForm 1 и 2 ( а еще файл немного изменил и у меня их добавилось 3 и 4)
и тогда уже не будет происходить
Цитата
Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.

Еще раз СПАСИБО ВАМ ВСЕМ ОГРОМНОЕ

Автор - lebensvoll
Дата добавления - 26.07.2016 в 17:44
RAN Дата: Вторник, 26.07.2016, 18:31 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Думалку иногда включать надо!
[vba]
Код
Call UserForm_Activate
[/vba]
приведет как раз к обратному.
Макрос, повешенный на событие UserForm_Activate будет выполняться не один, а два раза.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДумалку иногда включать надо!
[vba]
Код
Call UserForm_Activate
[/vba]
приведет как раз к обратному.
Макрос, повешенный на событие UserForm_Activate будет выполняться не один, а два раза.

Автор - RAN
Дата добавления - 26.07.2016 в 18:31
Pelena Дата: Вторник, 26.07.2016, 18:33 | Сообщение № 9
Группа: Модераторы
Ранг: Экселист
Сообщений: 9842
Репутация: 2252 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
Даже не два. Эта строка была повешена на изменение каждого контрола. Об этом wild_pig и писал в третьем посте


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеДаже не два. Эта строка была повешена на изменение каждого контрола. Об этом wild_pig и писал в третьем посте

Автор - Pelena
Дата добавления - 26.07.2016 в 18:33
RAN Дата: Вторник, 26.07.2016, 18:40 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Так с таким же успехом можно на каждый контрол и
[vba]
Код
Call UserForm_Initialize
[/vba]
подвесить! hands yes
Что я зачастую практикую (правда, только там, где надо, точнее, на тех контролах, где надо).


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

Сообщение отредактировал RAN - Вторник, 26.07.2016, 19:03
 
Ответить
СообщениеТак с таким же успехом можно на каждый контрол и
[vba]
Код
Call UserForm_Initialize
[/vba]
подвесить! hands yes
Что я зачастую практикую (правда, только там, где надо, точнее, на тех контролах, где надо).

Автор - RAN
Дата добавления - 26.07.2016 в 18:40
lebensvoll Дата: Вторник, 26.07.2016, 22:17 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
Много уважаемые форумчане вы меня вообще запутали ((((
С одной сторону то что мы с делали с Pelena, и предложено wild_pig, РАБОТАЕТ
А вот правильно ли она или нет я этих то терминологий не понимаю ((((
Цитата
Не надо использовать активацию формы. Надо прописать загрузку списков на инициализацию. Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.

Ну а тем более уж эти для меня вообще темный лес ((((
Цитата
Так с таким же успехом можно на каждый контрол и
[vba]
Код
Call UserForm_Initialize
[/vba]

подвесить! hands yes
Что я зачастую практикую (правда, только там, где надо, точнее, на тех контролах, где надо).

Ни чего ведь нет критического если я останусь на варианте где работает???


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеМного уважаемые форумчане вы меня вообще запутали ((((
С одной сторону то что мы с делали с Pelena, и предложено wild_pig, РАБОТАЕТ
А вот правильно ли она или нет я этих то терминологий не понимаю ((((
Цитата
Не надо использовать активацию формы. Надо прописать загрузку списков на инициализацию. Сейчас же постоянно при каждом чихе данные заново заносятся в форму с листа.

Ну а тем более уж эти для меня вообще темный лес ((((
Цитата
Так с таким же успехом можно на каждый контрол и
[vba]
Код
Call UserForm_Initialize
[/vba]

подвесить! hands yes
Что я зачастую практикую (правда, только там, где надо, точнее, на тех контролах, где надо).

Ни чего ведь нет критического если я останусь на варианте где работает???

Автор - lebensvoll
Дата добавления - 26.07.2016 в 22:17
Pelena Дата: Вторник, 26.07.2016, 22:34 | Сообщение № 12
Группа: Модераторы
Ранг: Экселист
Сообщений: 9842
Репутация: 2252 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
lebensvoll, у Вас в процедуре активации прописано заполнение формы данными с листа. Эта процедура вызывалась при каждом изменении каждого поля. То есть Вы выбираете новое значение из списка, а оно тут же снова меняется на значение с листа.
Поэтому я и предложила убрать эту строку с активацией


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщениеlebensvoll, у Вас в процедуре активации прописано заполнение формы данными с листа. Эта процедура вызывалась при каждом изменении каждого поля. То есть Вы выбираете новое значение из списка, а оно тут же снова меняется на значение с листа.
Поэтому я и предложила убрать эту строку с активацией

Автор - Pelena
Дата добавления - 26.07.2016 в 22:34
lebensvoll Дата: Среда, 27.07.2016, 08:56 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
Всем доброго утра!!!
Pelena, ну и она работает и все меняется при редактировании строки и сохранении hands спасибо вам огромное за это.
Но я так понял по вашим беседам что можно было также прийти к этому если бы я также на всех формах изменил бы
[vba]
Код
Call UserForm_Activate
[/vba]
на [vba]
Код
Call UserForm_Initialize
[/vba]
процесс происходил бы также как поступили вы [vba]
Код
'Call UserForm_Activate
[/vba]
Или я не правильно понял RAN, почему вы призываете
Цитата
Думалку иногда включать надо!


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvoll - Среда, 27.07.2016, 08:57
 
Ответить
СообщениеВсем доброго утра!!!
Pelena, ну и она работает и все меняется при редактировании строки и сохранении hands спасибо вам огромное за это.
Но я так понял по вашим беседам что можно было также прийти к этому если бы я также на всех формах изменил бы
[vba]
Код
Call UserForm_Activate
[/vba]
на [vba]
Код
Call UserForm_Initialize
[/vba]
процесс происходил бы также как поступили вы [vba]
Код
'Call UserForm_Activate
[/vba]
Или я не правильно понял RAN, почему вы призываете
Цитата
Думалку иногда включать надо!

Автор - lebensvoll
Дата добавления - 27.07.2016 в 08:56
SGerman Дата: Среда, 27.07.2016, 23:31 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Заполняйте контролы формы не в самой форме, а в коде, ее открывающем (в модуле листа, например), пепосредственно перед UserForm.Show
Форма же после нажатия условной кнопки Ok проверяет правильность заполнения и вписывает новые значения в ячейки листа, а потом дает сама себе Hide.

Так будет и просто, и надежно


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеЗаполняйте контролы формы не в самой форме, а в коде, ее открывающем (в модуле листа, например), пепосредственно перед UserForm.Show
Форма же после нажатия условной кнопки Ok проверяет правильность заполнения и вписывает новые значения в ячейки листа, а потом дает сама себе Hide.

Так будет и просто, и надежно

Автор - SGerman
Дата добавления - 27.07.2016 в 23:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » После редактирования строки в таблице не корректны данные (Макросы/Sub)
Страница 1 из 11
Поиск:

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