#vba #excel
#vba #excel
Вопрос:
В последнее время я писал несколько макросов для навигации по листам / изменения видимости / импорта-экспорта данных и т.д. Обычно я просто вставляю макросы в виде кнопок на листах. Обычно это работает хорошо, однако я продолжаю сталкиваться с проблемой, когда с помощью макроса или пользовательской формы я показываю veryhidden sheet, выбираю его и выхожу из макроса или формы.
Я делаю это, хотя через:
With Sheets("Sheet1")
.visibile = xlsheetvisible
.activate
.Range("A1").select
End With
Когда я затем пытаюсь манипулировать листом — например, вводить ячейку, удалять данные из ячейки или вставлять / удалять строки с помощью графического интерфейса, а не делать это с помощью кода, операции выполняются на исходном листе с помощью кнопки, вызывающей форму или макрос. вместо нового….
Кто-нибудь еще испытывает это? Я делаю что-то не так?
Комментарии:
1. это должно быть
.Visible
и не.visibility
2. Не могли бы вы подробнее объяснить свой вопрос? В чем ваша конкретная проблема?
3. Проблема в том, что, хотя макрос работает для отображения листа и выбора ячейки A1, когда я щелкаю правой кнопкой мыши по строке, например, для вставки строки, или когда я вношу какие-либо изменения в ячейки, excel выполняет все на исходном листе, который был активен до того, как я вызвал макрос для отображения очень скрытого листа чтобы я мог его отредактировать. Имеет ли это больше смысла? Кстати, @ShaiRado, большое спасибо за редактирование (по какой-то причине не удалось отобразить его в виде кода) — и да, это видно — исправил это 🙂
4. Этот код этого не
delete data from cell, or insert / delete rows
делает. Как мы должны вам помочь? Пожалуйста, улучшите свой вопрос, добавив соответствующий код.5. @ThomasInzina Я не хочу использовать код для редактирования / вставки / удаления. Я хочу использовать код, чтобы перейти к листу, а затем отредактировать его обычным образом, используя приложение Excel, а не VBA
Ответ №1:
Укажите объект листа для ячеек при ссылке на редактирование
например … sheets().range().paste
или активируйте лист, которым вы хотите управлять, перед вашим кодом (который управляет листом)
Комментарии:
1. Не уверен, что вы имеете в виду. Я не манипулирую листом с помощью кода. Я использую код для отображения очень скрытого листа , чтобы его можно было редактировать вручную. Проблема в том, что, хотя в конце макроса лист виден и, по-видимому, выбран, любые манипуляции происходят с ранее выбранным листом…
Ответ №2:
Найдено решение!!!
При дальнейшем исследовании кажется, что это сломано только в Office 2013. Я попробовал это в Office 2010, и все работало нормально.
Решение состоит в том, чтобы вызвать vbModeless
команду после Userform.show
, чтобы это было: Userform1.Show vbModeless
Не идеально, если вы хотите, чтобы пользователь отклонил пользовательскую форму, прежде чем вернуться к рабочему листу, но эй — это обходной путь 🙂
Будем надеяться, что Office 2016 исправит ошибку (я обновлюсь позже в этом месяце)