Прокрутите окно Excel слева направо с помощью элемента управления ActiveX - PullRequest
0 голосов
/ 26 июня 2018

enter image description here

У меня есть шесть разделов информации о сотрудниках, два из которых показаны ниже.Под разделами у меня есть полоса прокрутки activex, которую я хочу использовать слева направо.Эта полоса прокрутки отличается от полосы прокрутки в листе Excel.По сути, в настоящее время я вижу Раздел 1 и Раздел 2. Когда я перемещаю этот свиток слева направо, я должен видеть раздел 2 и 3, еще раз, когда я двигаюсь слева направо, я должен видеть раздел 3 и раздел 4, .... и так далее.

Как мне добиться этой функциональности.

Я попытался использовать этот фрагмент кода здесь.

    Private Sub ScrollBar3_Change()
    Dim sc As Long
    sc = 4 + Me.ScrollBar3.Value
    ActiveWindow.ScrollColumn = sc
    Me.ScrollBar3.Left = Me.Cells(1, sc).Left
    End Sub

В настоящее время полоса прокрутки начинается с C32 и заканчивается на AA32.Но когда я нажимаю на нее, полоса прокрутки внезапно исчезает.

Заранее спасибо :)

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы должны Scrollbar.Max равняться максимальному количеству ходов.Я бы также предложил использовать Application.Goto Range(), True, прежде чем перемещать полосу прокрутки.

enter image description here

enter image description here

Вот простой способ убедиться, что все синхронизировано:

Установите Worksheet.ScrollArea, что ограничит возможности пользователей прокручивать

enter image description here

Удобный для пользователя код

Private Sub ScrollBar3_Change()
    Dim col As String
    col = Choose(Me.ScrollBar3.Value, "C", "N", "AB")
    Application.Goto Cells(21, col), True
    Me.ScrollBar3.Left = Columns(col).Left
End Sub

Тоталитарный код

Private Sub ScrollBar3_Change()
    Dim col As String
    col = Choose(Me.ScrollBar3.Value, "C", "N", "AB")
    Me.ScrollArea = ""
    Application.Goto Cells(21, col), True
    Me.ScrollArea = Cells(21, col).Address
    Me.ScrollBar3.Left = Columns(col).Left
End Sub
0 голосов
/ 26 июня 2018

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

Application.Goto Метод

Выбирает любой диапазон или процедуру Visual Basic в любой рабочей книге и активирует эту рабочую книгу (если она еще не активна).

expression.Goto( Reference , Scroll )

  • expression Переменная, представляющая объект Application.
  • Reference Необязательно (вариант) Пункт назначения.Может быть объектом Range, строкой, содержащей ссылку на ячейку в стиле R1C1, или строкой, содержащей имя процедуры VBA.Если этот аргумент опущен, конечный диапазон - это последний диапазон, который вы использовали для выбора метода Goto.
  • Scroll Необязательно (вариант) True для прокрутки окна так, чтобы в левом верхнем углу появился верхний левый угол диапазонаокна.False чтобы не прокручивать окно.По умолчанию False.

Пример:

Sub demo_JumpToSection()

    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")

    MsgBox "Click to go to the next section.", , "Go to column AA"
    Application.Goto ws.Range("AA1"), True

    MsgBox "Click to go to the next section.", , "Go to column BB"
    Application.Goto ws.Range("BB1"), True

    MsgBox "Click to go to the next section.", , "Go to column CC"
    Application.Goto ws.Range("CC1"), True

    MsgBox "Click to go back to the beginning.", , "Go to column A"
    Application.Goto ws.Range("A1"), True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...