Excel 2016 VBA код Listbox1 не обновляется в режиме реального времени.Формат данных отличается от листа.Прокрутка мыши не работает - PullRequest
0 голосов
/ 17 ноября 2018

Я отправил вопрос несколько дней назад, и мне было сложно объяснить, как я хотел, чтобы форма выполняла поиск. Он не получил ответа; возможно, виноват мой недостаток понимания терминов, хотя несколько человек отсюда пытались помочь с этим. С тех пор я удалил вопрос, и я пытаюсь придумать другой способ добиться того, что я хочу, чтобы пользовательская форма выполняла.

Сейчас я использую ListBox1 для отображения всего содержимого листа. При этом я сталкивался с несколькими проблемами.

Чего достичь:

ListBox1 должен отображать все содержимое листа на основе выбора из ComboBox, который называется UserMonth в UserForm2.

Что работает:

Мне удалось заставить ListBox1 работать, и он отображает содержимое активного / открытого листа в фоновом режиме.

Что не работает / правильно:

ListBox1 не обновляется в реальном времени. Как только запись сделана, UserForm2 необходимо закрыть и перезапустить снова, чтобы ListBox1 обновился и показал последнюю сделанную запись.

Формат даты на листе - ДД / ММ / ГГГГ, формат даты, отображаемый в ListBox1, - ММ / ДД / ГГГГ, поэтому ListBox1 не отображает формат даты надлежащим образом.

Все листы имеют 7 столбцов. Я установил ListBox1 соответствующим образом, чтобы показывать заголовки столбцов тоже. Но, но ListBox1 показывает заголовки столбцов из листа на внешней стороне ListBox1 ColumnHeads.

Прокрутка мыши не работает в ListBox1

Код, который я использую для ListBox1:

В Private Sub UserForm_Initialize () введен следующий код

  ListBox1.List = wsActive.Range("G8", wsActive.Range("A8").End(xlDown)).Value

Стоит упомянуть, что в строке 8 на листе находятся заголовки, поэтому я включил G8-A8 для вызова значений? (На мой взгляд, это как это работает?) Начиная с 9-й строки фактические данные запускаются и так далее.

Код из Private Sub UserForm_Initialize ()

Private Sub UserForm_Initialize()

Dim wsActive As Worksheet
Dim i As Long, LastRow As Long
Set wsActive = ActiveSheet
LastRow = wsActive.Cells(wsActive.Rows.Count, "G").End(xlUp).Row

For i = 1 To ThisWorkbook.Sheets.Count
Me.SelectMonth.AddItem ThisWorkbook.Sheets(i).Name
Next

Я думаю, что код выше устанавливает активный лист на основе выбора из Combobox с именем SelectMonth. В идеале тот же выбор можно использовать для отображения ListBox1, но в режиме реального времени, а не перезапускать форму снова, чтобы увидеть последнюю запись, сделанную на листе.

Таким образом, если комбинированный список Selectmonth изменяется с января 2019 года на март 2019 года, ListBox1 должен отображать весь лист с марта 2019 года и показывать в обновлении его в режиме реального времени, если какие-либо записи были сделаны, пока пользовательская форма была открыта и не нужно было перезапускать пользовательскую форму снова.

...