Выбор и переключение на veryhidden Sheet не работает должным образом

#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 исправит ошибку (я обновлюсь позже в этом месяце)