Запустить другой лист кнопкой Spin

хотите использовать кнопку «Спин» (элемент управления ActiveX) для отображения предыдущего или следующего листа. Когда кнопка нажата, событие успешно запускается, и нужный лист активируется, но он удерживает некоторые элементы (команды, графики и т. Д.) От исходного листа и показывает их как добавляемое изображение.

неправильно загруженный листначальный лист с кнопками Spin (справа) Пример кода для события кнопки «Вниз»:

Private Sub SpinButton_JumpToWeek_SpinDown() Dim sh_num As String Dim tmp_num As Integer Application.ScreenUpdating = False Application.EnableEvents = False SpinButton_JumpToWeek.Value = Range("B27").Value - 1 tmp_num = SpinButton_JumpToWeek.Value ' Activate desired KTx sheet sh_num = "KT" & tmp_num Range("F27").Value = "" 'reset to blank Sheets(sh_num).Activate Application.ScreenUpdating = True Application.EnableEvents = True End Sub 

Чтобы переопределить этот эффект, мне нужно вручную выбрать (активировать) другой лист, а затем снова выбрать нужный лист. Я также попытался автоматизировать это обходное решение с помощью макроса, но, к сожалению, он не работает.

Интересно, что эта проблема не возникает, если я выполняю код в режиме отладки (используя точку останова и шаг за строкой).

Удивительно, но у меня нет такой проблемы, если я попытаюсь показать предыдущий / следующий лист, записав значение (индекс имени листа) в определенную ячейку (то есть используя событие Worksheet_Change). Отображается нужная страница. Смотрите фотографии.

введите описание изображения здесь

Пример кода для описания этого evententer здесь:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim sh_num As String Application.ScreenUpdating = False Application.EnableEvents = False If Range("F27").Value > 0 Then ' Activate desired KTx sheet sh_num = "KT" & Range("F27").Value Range("F27").Value = "" 'reset to blank Sheets(sh_num).Activate End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub 

Мне нужно использовать кнопку «Спин», потому что она быстрее и позволяет мне пропускать некоторые листы (например, если у них нет данных). Проблема возникает как в 32, так и в 64-битных Excel.

Есть ли у кого-то идея, почему эта проблема возникает и обходной путь? Мне нужно изменить некоторые настройки или системные свойства в Excel? Любая помощь будет высоко оценен.

@mehow Я добавляю свой commenst здесь из-за большого количества слов.

  1. Я выполнил ваше предложение и попробовал пример UserForm с вставленным активным элементом управления «Microsoft Office Spreadsheet». Я узнал, что это не будет хорошим решением для моего случая, потому что ответ такого листа относительно медленный (даже на быстром компьютере, таком как мой), когда пользователь вставляет значения в ячейки. Кроме того, это значительно усложнит мою довольно простую книгу * .xlsm, в которой содержится более 50 листов (по 1 лист за каждую неделю, содержимое этих листов затем связано с основным листом) и полностью соответствует моим основным потребностям (с исключение этой кнопки вращения, конечно).

На мой взгляд, вероятно, необходимо манипулировать каким-то системным свойством (например, например, Application.ScreenUpdating трюк), но мне не хватает знаний VBA, чтобы найти его.

  1. Чтобы четко объяснить мой вопрос, мне нужно будет поделиться моей рабочей книгой, но я не знаю, как загрузить ее на этот форум. К сожалению, я не могу успешно загружать / показывать изображения на этом форуме (из-за моей низкой оценки), что также очень помогло бы.

Кстати, я не вижу изображений по другим вопросам этого форума. , Может ли эта проблема возникнуть из-за отсутствия плагинов в веб-браузере?

    Вы можете использовать простой трюк … до «Application.screenupdating = true» вы можете вставить две строки:

    ActiveWindow.SmallScroll Down:=-100
    ActiveWindow.SmallScroll Up:=100

    Interesting Posts

    Как экспортировать список объектов C # в таблицу Excel?

    Ошибка: «Метод« строки »объекта« _Global »не выполнен

    macro: если переключатель включен, тогда скопируйте формулу вниз в диапазон

    Excel – создать столбец с пустыми ячейками, если ячейка повторяется и использовать ее как зависимость для второго столбца

    Экстракция Конкретные данные в excel

    Экспорт Excel не отображает персидских символов

    Найдите строку и столбец значения, которые вводятся в userform

    Есть ли способ изменить размер кнопки «Очистить фильтр» на слайсер в MS Excel?

    Функция Excel weeknum возвращает неверную неделю

    Как проверить лист рабочей книги или использовать JXL в selenium webdriver?

    Excel – условное форматирование с несколькими критериями не работает

    Excel сбой во время простого VBA (открыть файл, скопировать, вставить, закрыть) в цикле

    Как удалить строки из файлов excel, если ячейка в определенном столбце содержит строку массива?

    Выполнять поиск в Excel при вводе текста

    Excel VBA – передача правильных аргументов в процедуры

    Давайте будем гением компьютера.