Добрый, может кто уже сталкивался с подобной проблемой. Есть макрос который переносит данные из другой книги/листа на активыный лист. При этом используются диалоговые окна InputBox. Может это важно.
Как это работает. 1.
Код
Set MyWorkbook= ActiveWorkbook : Set MySheet = ActiveSheet
2. На активно листе в InputBox юзер вводит адрес ачейки-получателя 3. Юзер переключается на другой лист в другой книге и в InputBox юзер вводит адрес ачейки-донора 4. После закрытия диалогового окна начинается перенос данных. При этом активной остается книга-донор на которую руками переключился юзер. 5. После переноса данных стоит команда
Код
MyWorkbook.Activate
MySheet.Activate
Ошибку не выдает, но и на изначальный лист с которого юзер начал работу, не переключает. Вариации с
Код
MyWorkbook.Select или Application.Window(MyWorkbook.Name).Activate
не помогли
П/С в пределах одной рабочей книги переключение листов работает. Работает также если макросом по запросу юзера другая рабочая книга (если нужный файл не открыт) сначала открывается. Потом юзер в ней выбирает ячейку. Затем макрос отрабатывает и переключает на изначальный лист.
Попробовал все работает. Прогоните макрос через F8 и посмотрите в окне Locals или Watch что присваивается переменным MyWorkbook и MySheet. м.б. не та книга или лист? А вообще лучше файл(ы) пример выложите посмотреть, что там да как!
"Все гениальное просто, а все простое гениально!!!"
А вы уверены что при активном окне InputBox, можно переключаться между книгами, у меня вышло только между листами. В итоге код вернул меня на лист1 и вставил данные! Все сработало как нужно. В первый InputBox внес получателя, во второй донора, исходя из логики написанного кода.
Код
Set r1 = Application.InputBox("Выберите мышкой начальную ячейку", Type:=8)
Set r2 = Application.InputBox("Выберите мышкой конечную ячейку", Type:=8)
"Все гениальное просто, а все простое гениально!!!"
Порядок действий у вас какой? в первое окно вводите диапазон из книги получателя, во второе из книги донора? Если так , то у меня все работает в Excel-2016
"Все гениальное просто, а все простое гениально!!!"
У меня Эксель - 2013. Да имеено так. После того как нажал ок. во втором ИнпутБоксе. Срабатывает макрос. И я остаюсь на листе доноре. Иногда на время работы макроса окно листа реципиенат становится активным, но потом все равно возвращает на лист-донор.
Есть еще один глюк. В рамках одной рабочей книги переключение листов срабатывает. Но Глючно. То есть открывает нужный лист, но при попытке что-то внести в ячееку - ничего не происходит. Она остается пуста и ошибки не выдает. Но если переключится на изначьный лист то увидим что знаечние ввелось в него в ячеку стаким же адресом. Помогает переключение мышкой по вкладкам листов
Столкнулась с такой же проблемой Может, кто-нибудь знает, как всё же обойти этот глюк макросом, а не переключением вручную между листами? Касается только Excel 2013, в 2010-м и 2016-м работает нормально. Файл для поиграться прикладываю
Лен, привет Напиши последней в макросе ShowForm строку shFactProd.Activate. А в FactProduct ее можно убрать Вот так
Код
Public Sub ShowForm()
Set SelectCell = Application.InputBox("Выберите ячейку", Type:=8)
SelectArt.Show
shFactProd.Activate
End Sub
Причину не знаю, нашел только как победить. Возможно, или не успевает что-то сделать, или путается - форма была открыта на одном листе, ввод на втором. Не должен, конечно, но в 2013 я много уже глюков всяких необъяснимых наблюдал. В основном с графикой