Vba excel как закрепить область в excel

0 / 0 / 0

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

Сообщений: 3

1

17.10.2011, 17:48. Показов 24480. Ответов 8


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

Подскажите, как с помощью VB установить закрепление областей в Excel.



0



Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

17.10.2011, 17:48

8

Tsvet

3 / 3 / 0

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

Сообщений: 111

17.10.2011, 18:14

2

В принципе и макрорекодер может помочь справиться с этой задачей, типа вот так:

Visual Basic
1
2
3
4
5
6
7
8
With ActiveWindow
        .SplitColumn = 5
        .SplitRow = 6
    End With
    ActiveWindow.SplitRow = 14 ' нужное значение
    ActiveWindow.SplitColumn = 3' нужное значение
    ActiveWindow.FreezePanes = True
End Sub

Чтобы снять закрепление — ActiveWindow.FreezePanes = False



0



Tsvet

3 / 3 / 0

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

Сообщений: 111

17.10.2011, 18:33

3

Сорри, не дописал

Visual Basic
1
2
3
4
5
6
Sub снять_закрепление()
With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 0
End With
End Sub



0



0 / 0 / 0

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

Сообщений: 3

17.10.2011, 18:43

 [ТС]

4

спасибо. попробую.



0



Сумрак

17.10.2011, 18:52

5

хех.. нужно явно указывать сколько строк или столбцов.А то она на 4 части экран поделит.

viper-x

65 / 22 / 7

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

Сообщений: 211

21.02.2022, 16:25

6

Сумрак, а как это сделать?
———————————————
Кроме того, мне всегда казалось, что код

Visual Basic
1
2
3
With ActiveWindow
        .SplitColumn = 4
End With

и

Visual Basic
1
ActiveWindow.SplitColumn = 4

делает вроде как одно и то же …или нет?



0



810 / 465 / 180

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

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

21.02.2022, 16:43

7

Код делает одно и то же. With пишется, когда с одним объектом много действий. Меньше писать и выше скорость, потому что эксель уже знает, кого «дергать».



0



viper-x

65 / 22 / 7

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

Сообщений: 211

22.02.2022, 08:46

8

Я пытаюсь закрепить области выше и левее ячейки B2
Код

Visual Basic
1
2
3
4
With ActiveWindow
        .SplitColumn = 1
        .SplitRow = 1
End With

производит разделение экрана в этом месте,
а следующий код убирает его:

Visual Basic
1
2
3
4
With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 0
End With

Код же

Visual Basic
1
2
3
4
[b2].Select
ActiveWindow.FreezePanes = True
'...........
ActiveWindow.FreezePanes = False

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



0



Punkt5

малоболт

1143 / 442 / 193

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

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

22.02.2022, 10:13

9

Цитата
Сообщение от viper-x
Посмотреть сообщение

Можно ли обойтись без лишнего Select?

Можно. Достаточно объединить оба ваших куска кода:

Visual Basic
1
2
3
4
5
6
Sheets(1).Activate 'делаем активным тот лист, который будем разделять
With ActiveWindow
  .SplitColumn = 4
  .SplitRow = 2
  .FreezePanes = True
End With



0



 

Мартын

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

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

Доброе время всем!
Вопрос простой как три копейки, но ответа пока не нашёл.
Надо закрепить определённую строку (чтобы не прокручивалось всё, что выше её) на НЕактивном листе.
У меня через VBA выводятся таблички на несколько различных листов. У каждой таблички есть «шапка» с автофильтром. Так вот хотелось бы закрепить эти шапки от прокрутки.
Из всего, что нарыл в тырнете, есть только ActiveWindow.FreezePanes=True , но это только для активного окна! А мне кажется очень некрасивым способ мелькать окнами перед носом юзера, переключаясь между листами и фиксируя строки.
Нет ли способа сделать это, не активируя каждый лист?

 

Ivan.kh

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

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

Отключите обновление экрана, и ничего мелькать не будет, а в конце вкл. его

 

vikttur

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

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

Вместо ActiveWindow ничего писать не пробовали?

FreezePanes работает только с активным листом…

 

Мартын

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

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

#4

27.09.2017 15:10:11

Цитата
Ivan.kh написал:
Отключите обновление экрана

Была такая мысль, но это-же кривые костыли. Должен быть прямой путь, не могли-же мелкомягкие так «тормознуть».
Ведь как-то где-то же программа запоминает, что на листе1 закрепление есть, а на листе2 его нет. Значит в каком-то месте информация о том, что на листе1 закреплена пятая строка, а на листе2 закреплён шестой столбец хранится! И эта инфа явно привязана к листам. Так неужели не предусмотрен способ эту информацию изменять программно?!?! Как-то это, ИМХО, странно и даже глупо.

Цитата
vikttur написал:
FreezePanes работает только с активным листом

Вот так и умирают мечты….

 

Ivan.kh

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

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

#5

27.09.2017 15:15:13

Цитата
Мартын написал:
Была такая мысль, но это-же кривые костыли.

с чего это вдруг.
С такой логикой всякие поделки на VBA- это кривой костыль.

 

vikttur

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

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

#6

27.09.2017 15:17:47

Цитата
FreezePanes работает только с активным листом

Это только предположение, дополнение к зачеркнутому. Не проверял досконально. Может, и есть решение без активации листа…

Цитата
…где-то же программа запоминает,… неужели не предусмотрен способ эту информацию изменять программно?!?! Как-то это, ИМХО, странно и даже глупо.

Не нужно глупостью называть то, чего не знаете… Возможно, для этого есть свои причины. Ведь не только этот параметр, но и другие нельзя менять без активации листа. И то, что нельзя сделать так, как нужно именно Вам — не глупость.

 

Hugo

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

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

#7

27.09.2017 15:18:36

Цитата
Мартын написал:
не могли-же мелкомягкие так «тормознуть».

— почему? Недооцениваете :)

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#8

27.09.2017 17:32:36

Цитата
Мартын написал:
Ведь как-то где-то же программа запоминает, что на листе1 закрепление есть, а на листе2 его нет. Значит в каком-то месте информация о том, что на листе1 закреплена пятая строка, а на листе2 закреплён шестой столбец хранится!

Да, в XML-схеме файла. Но достучаться до неё при открытом файле невозможно, да и в закрытом я бы не стал туда лезть только для того, чтобы закрепить область.
Но и здесь все не так просто. Перед установкой закрепления необходимо выделить ячейку и сместить лист так, чтобы закрепление было в видимой области. Иначе можно словить такую штуку, как закрепление где-то внизу или вверху, что может привести к невозможности просмотреть нужные данные.
Собственно все эти нюансы и мешают назначить закрепление на неактивном листе — ввиду особенностей объектной модели.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

z-f-s

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

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

#9

09.04.2020 18:46:01

Да, с закреплением в Excel чудеса! Удалось заставить работать закрепление таким вот странным кодом:

Код
Sub Крепёжжжж()

Application.ScreenUpdating = 0

AC = ActiveCell.Address

  If ActiveWindow.FreezePanes = True Then
     ActiveWindow.FreezePanes = True
     ActiveWindow.FreezePanes = False
  Else
     [CW50].Select
     ActiveWindow.FreezePanes = False
     ActiveWindow.FreezePanes = True
  End If

Range(AC).Select

End Sub

Изменено: z-f-s09.04.2020 18:47:14

 

DAG

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

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

#10

06.11.2020 22:32:48

Цитата
The_Prist написал:
Собственно все эти нюансы и мешают назначить закрепление на неактивном листе — ввиду особенностей объектной модели.

Добрый день! Весьма вероятно что это так.
Однако остается вопрос — а почему нельзя снять разделение областей на неактивных листах? В этом случае вроде бы не возникает проблема отображаемой ячейки  — нужно просто сделать .FreezePanes = False. У меня изредка возникает задача пробежаться по всем или избранным рабочим листам и, упрощенно выражаясь, сбросить все структурные и оформительские настройки — обесцветить ярлычок, отобразить все данные (или скрыть ярлыки автофильтра), удалить сценарии, ….. и многое другое…. Практически все делается методами объекта Worksheet или присвоением нужных значений его свойствам или свойствам внутренних объектов, а вот для снятия разделения окна почему-то приходится с отключенным обновлением экрана активировать этот рабочий лист и делать через ActiveWindow. Может есть способ обойтись без активации окна?

 

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

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

Изменено: Ігор Гончаренко06.11.2020 23:34:54

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Hugo

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

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

#12

07.11.2020 10:44:23

Кстати вот тоже вспомнил, что работает только через ActiveWindow:
чтобы изменять положение разрывов печати нужно перейти в страничный режим путем

Код
ActiveWindow.View = xlPageBreakPreview
 

sokol92

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

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

#13

07.11.2020 13:00:55

Цитата
DAG написал:
пробежаться по всем или избранным рабочим листам

Свойство FreezePanes относится к окну, а не к рабочему листу. Если Вы откроете книгу, состоящую из двух (видимых) листов, то книга будет иметь одно окно:

Код
 Debug.Print ActiveWorkbook.Windows.Count

Если через Меню/Вид/Новое окно добавить второе окно и отображать в окнах разные листы, то тогда можно управлять свойствами  FreezePanes этих окон без предварительного активирования.

Изменено: sokol9207.11.2020 13:04:47

Владимир

Karataev Дата: Пятница, 26.06.2015, 22:29 | Сообщение № 2
ikki Дата: Суббота, 27.06.2015, 00:37 | Сообщение № 3

точнее — никаким прокручиванием вообще )

как вариант — можно воспользоваться штатным средством «Представления» (вкладка Вид)
в Вашем файле я создал два представления — с именами «_47» и «3437»
применяете то или другое — закрепленная шапка будет меняться.

точнее — никаким прокручиванием вообще )

как вариант — можно воспользоваться штатным средством «Представления» (вкладка Вид)
в Вашем файле я создал два представления — с именами «_47» и «3437»
применяете то или другое — закрепленная шапка будет меняться. ikki

помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение точнее — никаким прокручиванием вообще )

как вариант — можно воспользоваться штатным средством «Представления» (вкладка Вид)
в Вашем файле я создал два представления — с именами «_47» и «3437»
применяете то или другое — закрепленная шапка будет меняться. Автор — ikki
Дата добавления — 27.06.2015 в 00:37

Источник

Как закрепить ячейки в формулах для большого диапазона ячеек

Описание работы

Если вы читаете эту страницу, то скорее всего знаете что ссылки в формулах бывают как относительные, так и абсолютные. В Excel предусмотрено закрепление строк столбцов или конкретной ячейки в формуле. Однако отсутствует команда, выполняющая эту операцию для большого количества формул или для целой области ячеек с формулами.

С помощью надстройки VBA-Excel вы сможете закрепить ячейки в выбранном диапазоне. Для этого:

  1. Выделите диапазон данных
  2. Перейдите на вкладку меню VBA-Excel
  3. В меню Функции выберите команду Закрепить формулы
  4. В диалоговом Закрепление формул диапазона выберите тип закрепления.
  5. Нажмите кнопку ОК.

Вы можете выбрать 4 варианта закрепления

  1. Закрепление столбцов.
  2. Закрепление строк.
  3. Закрепление одновременно и строк и столбцов
  4. Снятие закрепления ячеек.

Источник

Как программно заморозить верхнюю строку листа Excel в Excel 2007 VBA?

Я ищу, чтобы программно заморозить верхнюю строку листа Excel из VBA. Конечная цель состоит в том, чтобы произвести тот же эффект, что и View > Freeze Panes > Freeze Top Row команда в Excel 2007, чтобы верхняя строка листа была заморожена, и пользователи могли видеть верхнюю строку листа даже при прокрутке данных.

6 ответов

выберите другой диапазон для другого эффекта, почти так же, как вы сделали бы вручную. «Замораживание верхней строки» действительно просто ярлык новый в Excel 2007 (и выше), он не содержит никаких дополнительных функций по сравнению с более ранними версиями Excel.

Tomalak уже дал вам правильный ответ, но я хотел бы добавить, что в большинстве случаев, когда вы хотели бы знать код VBA, необходимый для выполнения определенного действия в пользовательском интерфейсе, это хорошая идея записать макрос.

в этом случае Нажмите кнопку Записать Макрос на вкладке разработчик ленты, заморозить верхнюю строку, а затем остановить запись. Excel будет иметь следующий макрос, записанный для вас, который также выполняет эту работу:

проблема с записанным макросом такая же, как и проблема со встроенным действием: Excel выбирает замораживание верхнего видимого строка, а не фактическая верхняя строка, в которой можно найти информацию заголовка.

целью макроса в этом случае является замораживание фактической верхней строки. Когда я просматриваю строку #405592 и мне нужно проверить заголовок столбца (потому что я забыл заморозить строки, когда я открыл файл), мне нужно прокрутить наверх, заморозить верхний гребите, затем найдите мой путь обратно к строке #405592 снова. Поскольку я считаю, что это глупое поведение, я хочу, чтобы макрос исправил его, но, как я уже сказал, записанный макрос просто имитирует то же самое глупое поведение.

Я использую Office 2011 для Mac OS X Lion

обновление (2 минуты спустя):

просто попал в ту же проблему. По какой-то причине команда freezepanes просто заставила перекрестие появиться в центре экрана. Получается oout я перешел свойство screenupdating прочь! Решается со следующим кодом:

теперь он работает нормально.

чтобы развернуть этот вопрос в область использования за пределами Excel s собственный VBA,activewindow содержит собственность должно быть адресовано как дитя Excel.Объект приложения.

пример создания книги Excel из Access:

С помощью Excel.Объект приложения в проекте VBA другого приложения Office потребуется добавить библиотеку объектов Microsoft Excel 15.0 (или эквивалент для вашего собственного версия.)

основной процесс-это просто повторение ранее представленных ответов, но я подумал, что важно продемонстрировать, как обращаться с ActiveWindow, когда вы не находитесь в собственном VBA Excel. А вот код на VBA, оно должно быть напрямую transcribable на другие языки и платформы.

Это самый простой способ заморозить верхнем ряду. Правило для FreezePanes это заморозит верхний левый угол из выбранной ячейки. Например, если вы выделите C10, он замерзнет между столбцами B и C, строками 9 и 10. Поэтому, когда вы выделяете строку 2, она фактически замерзает между строками 1 и 2, которые являются верхней строкой.

и .SplitColumn или .SplitRow разделит ваше окно, как только вы разморозите его, что не так, как мне нравится.

Источник

Excel vba закрепление областей

Модератор форума: китин, _Boroda_

Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрепление области с применением SmallScroll (Макросы/Sub)

Закрепление области с применением SmallScroll

rever27 Дата: Пятница, 26.06.2015, 15:31 | Сообщение № 1
Karataev Дата: Пятница, 26.06.2015, 22:29 | Сообщение № 2
ikki Дата: Суббота, 27.06.2015, 00:37 | Сообщение № 3

точнее — никаким прокручиванием вообще )

как вариант — можно воспользоваться штатным средством «Представления» (вкладка Вид)
в Вашем файле я создал два представления — с именами «_47» и «3437»
применяете то или другое — закрепленная шапка будет меняться.

точнее — никаким прокручиванием вообще )

как вариант — можно воспользоваться штатным средством «Представления» (вкладка Вид)
в Вашем файле я создал два представления — с именами «_47» и «3437»
применяете то или другое — закрепленная шапка будет меняться. ikki

помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение точнее — никаким прокручиванием вообще )

как вариант — можно воспользоваться штатным средством «Представления» (вкладка Вид)
в Вашем файле я создал два представления — с именами «_47» и «3437»
применяете то или другое — закрепленная шапка будет меняться. Автор — ikki
Дата добавления — 27.06.2015 в 00:37

Источник

Как программно заморозить верхнюю строку листа Excel в Excel 2007 VBA?

Я ищу, чтобы программно заморозить верхнюю строку листа Excel из VBA. Конечная цель состоит в том, чтобы произвести тот же эффект, что и View > Freeze Panes > Freeze Top Row команда в Excel 2007, чтобы верхняя строка листа была заморожена, и пользователи могли видеть верхнюю строку листа даже при прокрутке данных.

6 ответов

выберите другой диапазон для другого эффекта, почти так же, как вы сделали бы вручную. «Замораживание верхней строки» действительно просто ярлык новый в Excel 2007 (и выше), он не содержит никаких дополнительных функций по сравнению с более ранними версиями Excel.

Tomalak уже дал вам правильный ответ, но я хотел бы добавить, что в большинстве случаев, когда вы хотели бы знать код VBA, необходимый для выполнения определенного действия в пользовательском интерфейсе, это хорошая идея записать макрос.

в этом случае Нажмите кнопку Записать Макрос на вкладке разработчик ленты, заморозить верхнюю строку, а затем остановить запись. Excel будет иметь следующий макрос, записанный для вас, который также выполняет эту работу:

проблема с записанным макросом такая же, как и проблема со встроенным действием: Excel выбирает замораживание верхнего видимого строка, а не фактическая верхняя строка, в которой можно найти информацию заголовка.

целью макроса в этом случае является замораживание фактической верхней строки. Когда я просматриваю строку #405592 и мне нужно проверить заголовок столбца (потому что я забыл заморозить строки, когда я открыл файл), мне нужно прокрутить наверх, заморозить верхний гребите, затем найдите мой путь обратно к строке #405592 снова. Поскольку я считаю, что это глупое поведение, я хочу, чтобы макрос исправил его, но, как я уже сказал, записанный макрос просто имитирует то же самое глупое поведение.

Я использую Office 2011 для Mac OS X Lion

обновление (2 минуты спустя):

просто попал в ту же проблему. По какой-то причине команда freezepanes просто заставила перекрестие появиться в центре экрана. Получается oout я перешел свойство screenupdating прочь! Решается со следующим кодом:

теперь он работает нормально.

чтобы развернуть этот вопрос в область использования за пределами Excel s собственный VBA,activewindow содержит собственность должно быть адресовано как дитя Excel.Объект приложения.

пример создания книги Excel из Access:

С помощью Excel.Объект приложения в проекте VBA другого приложения Office потребуется добавить библиотеку объектов Microsoft Excel 15.0 (или эквивалент для вашего собственного версия.)

основной процесс-это просто повторение ранее представленных ответов, но я подумал, что важно продемонстрировать, как обращаться с ActiveWindow, когда вы не находитесь в собственном VBA Excel. А вот код на VBA, оно должно быть напрямую transcribable на другие языки и платформы.

Это самый простой способ заморозить верхнем ряду. Правило для FreezePanes это заморозит верхний левый угол из выбранной ячейки. Например, если вы выделите C10, он замерзнет между столбцами B и C, строками 9 и 10. Поэтому, когда вы выделяете строку 2, она фактически замерзает между строками 1 и 2, которые являются верхней строкой.

и .SplitColumn или .SplitRow разделит ваше окно, как только вы разморозите его, что не так, как мне нравится.

Источник

Adblock
detector

Я хочу программно заморозить верхнюю строку листа Excel из VBA. Конечная цель — добиться того же эффекта, что и команда View > Freeze Panes > Freeze Top Row в Excel 2007, чтобы верхняя строка рабочего листа была заморожена, и пользователи могли видеть верхнюю строку рабочего листа даже при прокрутке данных.

6 ответов

Лучший ответ

Rows("2:2").Select
ActiveWindow.FreezePanes = True

Выберите другой диапазон для другого эффекта, почти так же, как вы делаете это вручную. «Закрепить верхнюю строку» — это новый ярлык, появившийся в Excel 2007 (и выше), он не содержит дополнительных функций по сравнению с более ранними версиями Excel.


45

Tomalak
29 Июл 2015 в 18:11

Проблема с записанным макросом такая же, как и со встроенным действием: Excel выбирает закрепить верхнюю видимую строку, а не фактическую верхнюю строку, в которой можно найти информацию заголовка.

Цель макроса в этом случае — заморозить фактическую верхнюю строку. Когда я просматриваю строку №405592 и мне нужно проверить заголовок столбца (потому что я забыл заморозить строки при открытии файла), мне нужно прокрутить вверх, заморозить верхнюю строку, а затем вернуться к строка # 405592 снова. Поскольку я считаю это глупым поведением, я хочу, чтобы макрос исправил его, но, как я уже сказал, записанный макрос просто имитирует такое же глупое поведение.

Я использую Office 2011 для Mac OS X Lion

Обновление (через 2 минуты):

Я нашел решение здесь: http://www.ozgrid.com/forum/showthread.php?t= 19692

Dim r As Range 
Set r = ActiveCell 
Range("A2").Select 
With ActiveWindow 
    .FreezePanes = False 
    .ScrollRow = 1 
    .ScrollColumn = 1 
    .FreezePanes = True 
    .ScrollRow = r.Row 
End With 
r.Select 


14

Dannid
13 Июл 2012 в 02:05

Просто нажмите на ту же проблему … По какой-то причине команда freezepanes просто вызвала появление перекрестия в центре экрана. Оказывается, я отключил ScreenUpdating! Решено с помощью следующего кода:

Application.ScreenUpdating = True
Cells(2, 1).Select
ActiveWindow.FreezePanes = True

Теперь работает нормально.


9

Tom M
14 Окт 2013 в 18:48

Чтобы расширить этот вопрос до области использования за пределами Excel собственного VBA, свойство ActiveWindow должно обращаться как дочерний по отношению к объекту Excel.Application.

Пример создания книги Excel из Access:

Использование объекта Excel.Application в проекте VBA другого приложения Office приведет к требуется добавить библиотеку объектов Microsoft Excel 15.0 (или эквивалентную для вашей собственной версии).

Option Explicit

Sub xls_Build__Report()
    Dim xlApp As Excel.Application, ws As Worksheet, wb As Workbook
    Dim fn As String

    Set xlApp = CreateObject("Excel.Application")
    xlApp.DisplayAlerts = False
    xlApp.Visible = True

    Set wb = xlApp.Workbooks.Add
    With wb
        .Sheets(1).Name = "Report"
        With .Sheets("Report")

            'report generation here

        End With

        'This is where the Freeze Pane is dealt with
        'Freezes top row
        With xlApp.ActiveWindow
            .SplitColumn = 0
            .SplitRow = 1
            .FreezePanes = True
        End With

        fn = CurrentProject.Path & "ReportsReport_" & Format(Date, "yyyymmdd") & ".xlsx"
        If CBool(Len(Dir(fn, vbNormal))) Then Kill fn
        .SaveAs FileName:=fn, FileFormat:=xlOpenXMLWorkbook
    End With

Close_and_Quit:
    wb.Close False
    xlApp.Quit
End Sub

Основной процесс — это просто повторение ранее представленных ответов, но я подумал, что важно продемонстрировать, как работать с ActiveWindow, когда вы не находитесь в собственном VBA Excel. Хотя здесь используется код VBA, его следует напрямую транслировать на другие языки и платформы.

Rows("2:2").Select
ActiveWindow.FreezePanes = True

Это самый простой способ заморозить верхний ряд. Правило для FreezePanes — заморозить верхний левый угол выбранной вами ячейки. Например, если вы выделите C10, он остановится между столбцами B и C, строками 9 и 10. Поэтому, когда вы выделите строку 2, он фактически остановится между строками 1 и 2, которые являются верхней строкой.

Кроме того, .SplitColumn или .SplitRow разделят ваше окно, как только вы его разморозите, что мне не нравится.


3

ian0411
23 Авг 2017 в 20:40

Томалак уже дал вам правильный ответ, но я хотел бы добавить, что в большинстве случаев, когда вы хотите узнать код VBA, необходимый для выполнения определенного действия в пользовательском интерфейсе, рекомендуется записать макрос.

В этом случае нажмите Запись макроса на вкладке разработчика на ленте, зафиксируйте верхнюю строку и остановите запись. В Excel будет записан следующий макрос, который также выполняет эту работу:

With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
End With
ActiveWindow.FreezePanes = True


22

Dirk Vollmar
13 Июл 2010 в 03:09

Итог: узнаете, как найти последнюю строку, столбец или ячейку в таблице с использованием трех различных методов на VBA. Используемый метод зависит от макета данных и от того, содержит ли лист пустые ячейки.

Видео лучше всего просматривать в полноэкранном режиме HD

Find Last Cell VBA Примеры.xlsm (79.6 KB)

специалист

Мнение эксперта

Витальева Анжела, консультант по работе с офисными программами

Со всеми вопросами обращайтесь ко мне!

Задать вопрос эксперту

В этом случае пользователю в некоторых случаях необходимо знать, как закрепить в Excel строку например, шапку таблицы при прокрутке. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

Добавить полосу прокрутки несложно, перейдите на вкладку разработчик (как включить вкладку, читайте здесь). Найдите кнопку Вставить и выберите Элемент управления формы — Полоса прокрутки. Как показано на картинке:

Как закрепить строку в Excel при прокрутке: подробная инструкция

  • Это ужасно. Метод содержит 9 аргументов. Хотя требуется только один из этих аргументов (Что), вы должны привыкнуть использовать хотя бы первые 7 аргументов. В противном случае метод Range.Find по умолчанию будет использовать ваши последние использованные настройки в окне поиска. Это важно. Если вы не укажете необязательные аргументы для LookAt, LookIn и SearchOrder, тогда метод Find будет использовать те параметры, которые вы использовали последними в окне поиска Excel.
  • Нахождение последней ячейки требует двух утверждений. Один, чтобы найти последний ряд и один, чтобы найти последний столбец. Затем вы должны объединить их, чтобы найти последнюю ячейку.

Оператор Rows.Count возвращает количество всех строк на рабочем листе. Поэтому мы в основном указываем последнюю ячейку в столбце A листа (ячейка A1048567) и поднимаемся до тех пор, пока не найдем первую непустую ячейку.

Как закрепить верхнюю строку таблицы Excel

Итак, вы создали таблицу в Excel 2007 или 2010. Обычно верхняя строка содержит названия столбцов, а сами таблицы ориентированы вертикально, чтобы их можно было листать сверху вниз.

При прокрутке вниз верхняя строка таблицы будет «уезжать» и скрываться из виду. Это проблему можно решить, закрепив верхнюю строку.

Как закрепить строку в Excel при прокрутке

В верхнем меню выберите вкладку «Вид» и пункт «Закрепить области».

В выпавшем списке выберете «Закрепить верхнюю строку». Под ней появится ограничивающая линия. Это значит, что строка зафиксирована и будет видна на экране даже во время прокрутки страницы.

Как найти последнее значение в столбце Excel

В Excel 2003 в меню под названием «Окна», если в любой части вашей таблицы есть хотя бы одна закреплённая строка или столбец, появится команда «Снять закрепление областей». Её вам нужно будет нажать для отмены закрепления.

специалист

Мнение эксперта

Витальева Анжела, консультант по работе с офисными программами

Со всеми вопросами обращайтесь ко мне!

Задать вопрос эксперту

Чтобы выполнить описанную выше операцию, но для нескольких строк одновременно, нужно выделить ту строчку в таблице, которая расположена сразу же за закрепляемыми , затем выполнить шаги 1 и 2 из последовательности, указанной выше, и в выпадающем меню нажать на пункт, который называется Закрепить области. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

Чтобы выполнить описанную выше операцию, но для нескольких строк одновременно, нужно выделить ту строчку в таблице, которая расположена сразу же за закрепляемыми, затем выполнить шаги 1 и 2 из последовательности, указанной выше, и в выпадающем меню нажать на пункт, который называется «Закрепить области».
Закрепление области в Excel 2003

Как сделать строку прокрутки в excel?

Конечно, полностью отказаться от мышки не получится, да это и не нужно. Например, выбрать рисунок на листе быстрее мышкой, чем перебирать клавиатурой графические объекты. Вы сами для себя определите, какие действия вам быстрее выполнять мышью, а какие с помощью клавиатуры.

Если у вас Excel 2007 или более новая версия

Фиксация шапки таблицы

Закрепление области в Excel 2007

Вам нужно выполнить следующую последовательность шагов, чтобы получить искомый результат:

  1. В верхней части программы Excel найдите меню, которое называется «Вид» и кликните на него.
  2. После того, как меню развернётся, вам понадобится найти в нём кнопку, называющуюся «Закрепить области».
  3. При нажатии на эту кнопку появится выпадающее меню, в котором находится интересующий вас пункт, а именно — «Закрепить верхнюю строку». Нажмите на него, и шапка таблицы будет зафиксирована.

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

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

Фиксация столбца

Чтобы зафиксировать первый столбец, сделайте следующее:

  • В верхней части программы Excel найдите меню, которое называется «Вид» и кликните на него.
  • После того как меню развернётся, вам понадобится найти в нём кнопку, называющуюся «Закрепить области».
  • При нажатии на эту кнопку появится выпадающее меню, в котором находится интересующий вас пункт, а именно — «Закрепить верхний столбец». Нажмите на него, и он будет зафиксирован.

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

Чтобы выполнить описанную выше операцию, но для нескольких столбцов одновременно, нужно выделить тот столбец в таблице, который расположен сразу же за закрепляемыми, затем выполнить шаги 1 и 2 из последовательности, указанной выше, и в выпадающем меню нажать на пункт, который называется «Закрепить области».

Фиксация неподвижной области

Фактически, закрепление неподвижной области представляет собой синтез методов фиксации строк и столбцов. Оно осуществляется следующим образом:

  1. Первым делом вам нужно выделить ячейку, которая будет являться первой в прокручиваемой области. Другими словами, как говорилось в параграфе о фиксации неподвижной области в Excel 2003, если вам требуется зафиксировать три столбца и восемь строк, то нужно выделить в Эксель ячейку, находящуюся в четвёртом столбце и девятой строке.
  2. В верхней части программы Excel найдите меню, которое называется «Вид» и кликните на него.
  3. После того как меню развернётся, вам понадобится найти в нём кнопку, называющуюся «Закрепить области».
  4. При нажатии на эту кнопку появится выпадающее меню, в котором находится интересующий вас пункт, а именно — «Закрепить области». Нажмите на него, и требуемый результат будет получен.

Как зафиксировать строку или столбец в excel при прокрутке или закрепить неподвижной некоторую область таблицы

Примечание. Кнопка «Снять закрепление областей» Excel 2003 и 2000 находится в меню «Окно». Если кнопки инструментов часто используются, можно добавить их на панель быстрого доступа. Для этого щелкаем правой кнопкой мыши и выбираем предложенный вариант.

специалист

Мнение эксперта

Витальева Анжела, консультант по работе с офисными программами

Со всеми вопросами обращайтесь ко мне!

Задать вопрос эксперту

В случае если в вашей таблице заголовки размещены более чем в одной колонке и вы хотите их закрепить, то проделайте следующие действия. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

Наименования столбцов и строк могут быть значительно удалены от ячеек, с которыми пользователь работает в этот момент. И все время прокручивать страницу, чтобы увидеть название, некомфортно. Поэтому в табличном процессоре имеется возможность закрепления областей.

Навигация по документу Excel с помощью клавиатуры

  1. Определите место в таблице, где вам необходимо будет закрепить неподвижную область.
  2. Затем выделите ячейку, которая является следующей по отношению к последним фиксируемым ячейкам. Иными словами, если вам требуется зафиксировать три столбца и восемь строк, то нужно выделить в Эксель ячейку, находящуюся в четвёртом столбце и девятой строке.
  3. Нажмите на «Закрепить области», расположенную, как вы, наверное, помните, в меню «Окна».

В таблице, как правило, шапка одна. А строк может быть от нескольких десятков до нескольких тысяч. Работать с многостраничными табличными блоками неудобно, когда названия столбцов не видны. Все время прокручивать к началу, потом возвращаться к нужной ячейке – нерационально.

Like this post? Please share to your friends:
  • Vba excel как задать цвет ячейки в excel
  • Vba excel как задать формат ячейки в excel
  • Vba excel как задать переменную
  • Vba excel как задать массив
  • Vba excel как задать range