Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/27: Рейтинг темы: голосов - 27, средняя оценка - 4.63
Excel

Вертикальный ScrollBar рабочего листа

19.04.2007, 20:17. Показов 5213. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На листе есть таблица, которая в разное время может занимать разное количество строк. .....

Как сделать что-то вроде этого:



With ScrollBarRows

.Min = 1

.Max = 'последняя занятая строка'

End With



ЗЫ: это код для формы, нужен аналогичный для рабочего листа

PSS: номер последней строки всегда известен
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2007, 20:17
Ответы с готовыми решениями:

Заполнить столбец А рабочего листа
Заполнить столбец А рабочего листа Excel случайными целыми числами (N чисел) из диапазона (-12;12). Найти минимальный и максимальный...

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

Выборка рабочего листа, блок With
Здравствуйте! Помогите решить проблему в коде. С помощью данного кода происходит сдача книги в библиотеке. В таблице "Архив"...

18
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
19.04.2007, 22:25
Не очень понял, но может вам цитата из Help поможет
Visual Basic
1
2
3
4
5
6
7
8
Private Sub UserForm_Initialize()
     ScrollBar1.Max = 400
     ScrollBar1.Min = 10
     ScrollBar1.Value = 100
     
     Frame1.TextBox1.Text = "Enter your text here."
     Frame1.TextBox1.MultiLine = True
     Frame1.TextBox1.WordWrap = True
0
Excel
19.04.2007, 22:43
Pavel55 (19.04.2007)
Не очень понял, но может вам цитата из Help поможет<
Не поможет.

Для ScrollBara на пользовательской форме я и сам привёл пример.

А мне нужно для скролбара на листе, тот что справа от ячеек.



Чтобы если я перетянул ползунок вниз, то как раз попал-бы на последнюю строку текущй таблицы



PS: Sheets(1).ScrollArea='Таблица' - не предлагать
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
20.04.2007, 13:33
Excel (19.04.2007)

PS: Sheets(1).ScrollArea='Таблица' - не предлагать
Почему?
0
Excel
20.04.2007, 15:15
vkodor (20.04.2007)

Почему?


Потому, что если вчера последняя строка в таблице была 10 000, а сегодня 100, хоть и сделать scrollarea= "A1:A100" , у скроллбара всё равно остаётся

Min=1

Max=10 000



Попробуйте в этом случае, пертаскивая такой ползунок, поперемещаться по 100-строковой таблице и вопрос отпадёт.



PS: По-моему без API не обойтись. Только вот кто бы функцию подсказал
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
20.04.2007, 15:50
Если после того, как таблица сократилась с 10 000 до 100 удалять пустые строки (вручную или макросом), а потом сохранить файл, то ScrollBar сбрасывается и уже будет от 1 до 100
0
Excel
20.04.2007, 22:30
Перерыв всё API склоняюсь к мнению, что задача не выполнима.

С помощью апи можно управлять скролбаром приложения, но не скролбаром листа (
Visual Basic
1
2
3
4
5
6
7
Private Declare Function FlatSB_SetScrollRange Lib "comctl32" (ByVal hWnd As Long, ByVal code As Long, ByVal nMinPos As Long, ByVal nMaxPos As Long, ByVal fRedraw As Boolean) As Long
 
Sub GGGG()
 
    FlatSB_SetScrollRange Application.hWnd, 1, 20, 80, False
 
End Sub
Хотя надежда найти способ обратиться именно к скролбару листа ещё жива
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
20.04.2007, 23:27
Может я немного задачу не понял. Но почему нельзя просто сделать
Cells(st,1).Select ' где st - это известный номер последней строки.
При этом все автоматически отскролбарится и будет видна последняя строка.
0
Excel
21.04.2007, 02:24
R1001 (20.04.2007)

При этом все автоматически отскролбарится .....
Не отскролбарится.



Excel (20.04.2007)

Потому, что если вчера последняя строка в таблице была 10 000, а сегодня 100, хоть и сделать scrollarea= "A1:A100" , у скроллбара всё равно остаётся

Min=1

Max=10 000


И даже если



Если после того, как таблица сократилась с 10 000 до 100 удалять пустые строки (вручную или макросом), а потом сохранить файл, то ScrollBar сбрасывается и уже будет от 1 до 100
в моём случае почему-то диапазон скролбара изменяется, но на 1 -1 000.



К тому же

а потом сохранить файл


Словами одного завсегдатая: ' не камильфо '
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
22.04.2007, 00:03
2 Excel
Все таки объясните пожалуйста, какая цель должна быть достигнута в задаче?
Пока только я понимаю, что надо, что бы последняя строка видна была. Но это ведь реализуется через Select. Для чего такие сложности ?
0
Excel
22.04.2007, 08:33
1. Заполните ячейки 'A1:A10 000' чем угодно.

2. Выделите диапазон 'A101:A10 000' и выполните

Правка->Очистить->Всё

3. А вот теперь добейтесь чтобы в крайнем нижнем положении ползунка скроллбара - самой нижней строкой на экране была строка 100. (Не сохраняя книгу)



Вот собственно задача.



PS: В идеале, конечно, пункт 2 хотелось бы исключить
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 57
27.04.2007, 16:08
Если правильно понял...
может заделать сначала цикл высчитывающий строчки до первой пустой.
ну что то типа
Visual Basic
1
2
3
4
5
ss = ActiveSheet.Name
i = ActiveCell.Row
While Workbooks("1.xls").Sheets(ss).Cells(i, 1) <> " "
     i = i + 1
 Wend
а потом с скролбаром
Visual Basic
1
2
3
4
With ScrollBarRows
.Min = 1
.Max = i
End With
0
Excel
27.04.2007, 17:10
Hitry (27.04.2007)
а потом с скролбаром

With ScrollBarRows


Дык в том-то как раз и проблема. Нет объекта ScrollBarRows у Рабочего листа.

Вернее на экране он есть, а обратиться к нему невозможно.

По крайней мере я не смог.
Excel
28.04.2007, 02:55
...что то типа

ss = ActiveSheet.Name

i= ActiveCell.Row

While Workbooks("1.xls").Sheets(ss).Cells(i, 1) <> " "

i =i + 1

Wend
Кстати найти последнюю строчку можно рациональнее:



LastRow = Cells(10001, 1).End(xlUp).Row
1 / 1 / 0
Регистрация: 06.05.2010
Сообщений: 41
28.04.2007, 04:42
Приветствую.
А если, допустим, скрыть неиспользуемые строки (отображать по мере добавления записей):
Rows("101:65536").EntireRow.Hidden = True
0
Excel
28.04.2007, 07:36
Yuric (28.04.2007)
А если, допустим, скрыть неиспользуемые строки...
Пробовал. При этом Ползунок увеличивается почти на весь скроллбар, но перемещаться с помощью него по 100-строковой таблице невозможно (шаг прокрутки остаётся тем же, приблизительно 20 строк на одно движение мышью).

Не выход.
0 / 0 / 0
Регистрация: 05.03.2007
Сообщений: 23
28.04.2007, 13:32
Может стоит попробовать прикрутить к листу свою полосу прокрутки, а стандартную спрятать.
0
Knight
28.04.2007, 15:58
Честно говоря не совсем понял проблему.

Мне обычно помогало выражение
Visual Basic
1
2
3
4
5
On Error Resume Next
With ActiveSheet
    .UsedRange.Select
    .Cells(.UsedRange.Rows.Count + .UsedRange.Row, 1).Select
End With
при этом scrollbar автоматом масштабировался
Excel
28.04.2007, 21:20
Ну наконец-то.

Knight (28.04.2007)
ActiveSheet.UsedRange.Select
Прекрасно работает.



To Knight и всем неравнодушным большущее СПАСИБО !
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2007, 21:20
Помогаю со студенческими работами здесь

Активация нужного рабочего листа
Добрый день! Господа! Нужна ваша помощь, вот код: Dim exсеl_арр Аs Оbjесt Dim excel_sheet As Object Dim max_row As Integer Dim...

Фокус на форме рабочего листа Excel
Подскажите, кто знает, как программно передать фокус в ComboBox, например, на форме рабочего листа в Excel? Заранее СПАСИБО!

Создание рабочего листа без активации
Здравствуйте! Существует ли метод для создания рабочего листа без его активации? Спасибо!

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

Макрос, устанавливающий название рабочего листа
Здравствуйте, нужно создать макрос, который будет менять название активного рабочего листа в Excel. Желательно выводить форму с TextBox и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru