Vba excel прокрутка листа

Вам может потребоваться книга, чтобы всегда открывать конкретное представление или место на листе, или, возможно, просто изменить представление из макроса. Вы можете сделать это с помощью ScrollRow и ScrollColumn.

ScrollRow

Используется для программной прокрутки таблицы по вертикали. В этом примере таблица будет прокручиваться до строки 5.

ActiveWindow.ScrollRow = 5

ScrollColumn

Используется для программной прокрутки таблицы по горизонтали. В этом примере таблица будет прокручиваться до столбца 5.

ActiveWindow.ScrollColumn = 5

Автопрокрутка к определенной строке и столбцу при открытой книге

А размещение следующего кода в модуле всегда будет прокручивать Sheet1 книги до строки 5 и столбца 5, если макросы включены при открытии:

 Sub auto_open () Sheet1.Activate ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollRow = 5 End Sub

Вы поможете развитию сайта, поделившись страницей с друзьями

iam2005

0 / 0 / 0

Регистрация: 10.04.2011

Сообщений: 18

1

29.05.2012, 17:42. Показов 12613. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Доброго времени суток!
Как из кода VBA поместить вертикальный скролл активного листа в крайнее верхнее, а горизонтальный в крайнее левое положение.

Visual Basic
1
    Range("A1").Select    ' не помогает

Макрорекордер выдаёт что-то вроде

Visual Basic
1
2
3
    ActiveWindow.LargeScroll Down:=11
    ActiveWindow.SmallScroll ToRight:=-5
    ActiveCell.SpecialCells(xlLastCell).Select   '   Ctrl+End

Думаю ответ где-то на поверхности. Что-то вроде программного Ctrl+Home, но макрорекордер пишет Range(«A1»).Select.

Первые две строки листа зафиксированы.



0



ArtTs

0 / 0 / 0

Регистрация: 16.02.2010

Сообщений: 13

03.06.2012, 16:30

2

Попробуйте поиграть с параметрами

Visual Basic
1
2
3
    ActiveWindow.ScrollIntoView _
    Left:=50, Top:=20, _
    Width:=100, Height:=200

см. также справку по ScrollIntoView Method



0



Штурмaн

0 / 0 / 0

Регистрация: 27.04.2009

Сообщений: 265

03.06.2012, 18:20

3

Visual Basic
1
2
Application.GoTo Reference:=Worksheets("наличие").Range("A1"), _
Scroll:=True



0



VladConn

5 / 5 / 3

Регистрация: 17.10.2007

Сообщений: 1,119

03.06.2012, 18:43

4

Visual Basic
1
2
    ActiveWindow.ScrollRow = 1
    ActiveWindow.ScrollColumn = 1

Raznica mezhdu etim variantom i variantom, predlozhennym Штурмaнoм, odna: v etom variante soxranyaetsya Selection, a v tom menyaetsya. Vybirayte, chto nuzhno vam.

vladconn



0



iam2005

0 / 0 / 0

Регистрация: 10.04.2011

Сообщений: 18

04.06.2012, 23:49

 [ТС]

5

Большое спасибо «Штурмaн» и «VladConn» за помощь, а «ArtTs» за участие.
Поскольку в моём случае сохранять Selection нет необходимости, я выбрал вариант:
Application.GoTo Reference:=Worksheets(1).Range(«A1»), Scroll:=True

Альтернатива аналогична по результату, но немного больше кода:

Visual Basic
1
2
3
Range("A1").Select
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

04.06.2012, 23:49

5

Return to VBA Code Examples

You may need a workbook to always open to a specific view or location on a sheet, or possibly just change the view from a macro. You can do this by using the ScrollRow and ScrollColumn.

ScrollRow

Used to programmatically scroll a spreadsheet vertically. This example will scroll a spreadsheet to row 5.

ActiveWindow.ScrollRow = 5

ScrollColumn

Used to programmatically scroll a spreadsheet horizontally. This example will scroll a spreadsheet to column 5.

ActiveWindow.ScrollColumn = 5

AutoScroll to Certain Row & Column On Workbook Open

And placing the following code in a module will always scroll a workbook’s Sheet1 to row 5 and column 5 if macros are enabled upon opening:



Sub auto_open()
    Sheet1.Activate
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollRow = 5
End Sub

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

alt text

Learn More!

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

Доброго вечера всем.  

  Подскажите, пжст, как запустить макрос при прокрутке листа?  

  Спасибо.

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Привет! В Майкрософт посчитали ненужным отслеживать это событие :-)  
Но, может быть, есть и обходные пути…

 

у меня, обходными путями. вроде получилось.  
но, думаю, систему это будет малость притормаживать :)  

  пс. «крутим» Лист1.

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

Юра, у меня рекордер вот что выдал при прокрутке: ActiveWindow.SmallScroll Down:=24 , видимо прокрутил на 24 строки. Это никак нельзя приспособить?

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

Привет, Юрий.  
Я чего и спросил-то…  
Рою Уокенбаха, а тут ничего по этому вопросу :(  
Может как обойти можно?  
Мне вообще-то надо что-бы лист пересчитывался без изменений на листе, просто при его прокрутке.

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=ik}{date=17.04.2011 12:01}{thema=}{post}у меня, обходными путями. вроде получилось.  
но, думаю, систему это будет малость притормаживать :){/post}{/quote}  
Спасибо. Похоже что оно.  
Ща ещё покручу ;)  

  ЗЫ Система потерпит :-)

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=Serge 007}{date=17.04.2011 12:07}{thema=}{post}Привет, Юрий.  
Я чего и спросил-то…  
Рою Уокенбаха, а тут ничего по этому вопросу :(  
Может как обойти можно?  
Мне вообще-то надо что-бы лист пересчитывался без изменений на листе, просто при его прокрутке.{/post}{/quote}  
а чем мой вариант не подходит?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=ikki}{date=17.04.2011 12:11}{thema=Re: }{post}  
а чем мой вариант не подходит?{/post}{/quote}Так Вы не предлагали ничего…

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

ага.  
вот только я думаю, что он оч.часто будет срабатывать — т.е. нажали клавишу вниз, держим, не отпускаем, «гавкает» на каждой строчке.  
если так не надо, то еще обработку таймера можно зацепить…

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=ik}{date=17.04.2011 12:01}{thema=}{post}у меня, обходными путями. вроде получилось.{/post}{/quote}  
Прикольно :-)

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

ik — это тот же ikki, только незалогиненный :)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=Serge 007}{date=17.04.2011 12:12}{thema=Re: Re: }{post}{quote}{login=ikki}{date=17.04.2011 12:11}{thema=Re: }{post}а чем мой вариант не подходит?{/post}{/quote}Так Вы не предлагали ничего…{/post}{/quote}  
У него сил не хватило ник до конца написать :-)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

{quote}{login=Serge 007}{date=17.04.2011 12:12}{thema=Re: Re: }{post}{quote}{login=ikki}{date=17.04.2011 12:11}{thema=Re: }{post}  
а чем мой вариант не подходит?{/post}{/quote}Так Вы не предлагали ничего…{/post}{/quote}  
Третий пост от ik. Сокращенное от ikki? :)

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=kim}{date=17.04.2011 12:03}{thema=}{post}Юра, у меня рекордер вот что выдал при прокрутке: ActiveWindow.SmallScroll Down:=24 , видимо прокрутил на 24 строки. Это никак нельзя приспособить?{/post}{/quote}  
Так это не событие :-)

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

Будем знать, что это не такое уж и событие :)

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

ну, я не знаю…  
наверное, я опять что-нибудь не так делаю.  
но на форуме у меня часто слетает логин.  
может, соединение с инетом неустойчивое…  
причем я замечаю это только тогда, когда уже нажал кнопку «ответить» — появляется поле с именем.  
а ввести туда ikki нельзя — движок ругается, что такой пользователь у него уже есть :)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=kim}{date=17.04.2011 12:18}{thema=}{post}Будем знать, что это не такое уж и событие :){/post}{/quote}  
Не совсем так: событие само по себе происходит, конечно! Вот только ОНИ решили его не выводить в список отслеживаемых событий.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

пс. а SmallScroll, как и LargeScroll — это не события, а методы :)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=ikki}{date=17.04.2011 12:15}{thema=}{post}ik — это тот же ikki, только незалогиненный :){/post}{/quote}Ну дык откуда я это знаю-то? Аватар лепи — тогда никто не перепутает :-)  
Спасибо за макрос, только вот  у меня в книге один лист (так надо). Как обойти?

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=ikki}{date=17.04.2011 12:23}{thema=}{post}ну, я не знаю…  
наверное, я опять что-нибудь не так делаю.  
но на форуме у меня часто слетает логин.  
может, соединение с инетом неустойчивое…  
причем я замечаю это только тогда, когда уже нажал кнопку «ответить» — появляется поле с именем.  
а ввести туда ikki нельзя — движок ругается, что такой пользователь у него уже есть :){/post}{/quote}  
У меня номер прошел, наверное… (kim)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

>> как обойти?  

  а зачем обходить?  
хотя… мало ли…  
ну там же (в макросе) всё жужжит в бесконечном цикле, пока публичная переменная fTimerOn равна True.  
поэтому можно, к примеру, создать кнопку на листе, которая будет делать одно дело — сбрасывать эту переменную в False.  
жужжать перестанет.  

  или вопрос в другом?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

«Уход» ячейки (строки) за пределы монитора можно отследить?

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

{quote}{login=vikttur}{date=17.04.2011 12:37}{thema=}{post}»Уход» ячейки (строки) за пределы монитора можно отследить?{/post}{/quote}  
Если активная ячейка в зоне видимости, можно даже макрофункциями определить сдвиг.

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=ikki}{date=17.04.2011 12:33}{thema=to Serge007}{post}  
или вопрос в другом?{/post}{/quote}  
«Мне вообще-то надо что-бы лист пересчитывался без изменений на листе, просто при его прокрутке.»  
Повторю — лист в книге один. Кнопок в файле быть не должно.    
Если лист один — то макрос не работает. Он начинает работать только когда я перехожу на лист1 с другого.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

{quote}{login=Serge 007}{date=17.04.2011 12:44}{thema=Re: to Serge007}{post}{quote}{login=ikki}{date=17.04.2011 12:33}{thema=to Serge007}{post}  
или вопрос в другом?{/post}{/quote}Он начинает работать только когда я перехожу на лист1 с другого.{/post}{/quote}  
А если событие активации другой (или конкретной) ячейки?

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

тогда перехватываем события книги. а не листа.  
во вложении — файл с одним листом

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=ikki}{date=17.04.2011 12:49}{thema=}{post}тогда перехватываем события книги. а не листа.  
во вложении — файл с одним листом{/post}{/quote}  
А вот это — именнно то что надо! Большое спасибо ikki и всем остальным!

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

я тут с утра немного поэкспериментировал…  
мда… в который раз убедился, что написать ХОРОШИЙ макрос — это не то же самое, что написать макрос :)  

  короче, выявилось пока вот это —    
1) неправильно срабатывает при закреплении областей и снятии закрепления областей — при этом меняется левый верхний угол VisibleRange, хотя прокрутки и нет;  
2) в последнем варианте отключается только при закрытии книги, поэтому открытие других книг или переход к ним вызовет нежелательный эффект. лечится довольно легко — переносом соответствующих участков кода в Workbook_Activate и Workbook_Deactivate, но есть нюанс — сразу после деактивации (перехода в другую книгу) один раз всё-таки срабатывает;  
3) при разделенном окне срабатывает далеко не всегда;  
4) если окно не развернуто, то не срабатывает при изменении размера окна (т.е. изменение области видимых данных произошло, но «событие» не обрабатывается).  

  думаю, что всё это можно корректно обработать, тогда и получится ХОРОШИЙ макрос, а пока — только идея. :)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

#29

17.04.2011 12:27:57

Из списка напрягает только второй пункт.  
Остальные не важны.

<#0>

В этой статье будет показан метод прокрутки указанного листа или всех листов в верхнюю строку книги в Excel.

Прокрутите указанный лист или все листы вверх с кодом VBA


Прокрутите указанный лист или все листы вверх с кодом VBA

Чтобы прокрутить указанный лист или все листы в верхнюю строку Excel, сделайте следующее.

1. В рабочем листе вам нужно прокрутить вверх, пожалуйста, нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте код VBA в окно кода.

Код VBA: прокрутите указанный рабочий лист вверх

Sub ScrollToTop()
ActiveWindow.ScrollRow = 1
End Sub

Чтобы прокрутить все листы вверх в текущей книге, примените следующий код VBA.

Код VBA: прокрутите все листы вверх

Sub Select_A1_On_Activeworkbook()
    Dim xSheet As Worksheet
    For Each xSheet In ActiveWorkbook.Sheets
        xSheet.Activate
        ActiveSheet.Range("A1").Select
    Next
    ActiveWorkbook.Worksheets(1).Activate
End Sub

3. После ввода кода VBA в окно кода нажмите F5 ключ для запуска кода.

Затем активный рабочий лист или все рабочие листы в текущей книге немедленно прокручиваются вверх.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Vba excel пройти по всем строкам в листе
  • Vba excel продолжить for if
  • Vba excel программирование уроки
  • Vba excel проверка ячейки на ошибку
  • Vba excel проверка типов данных