Есть ли функция, которую я могу использовать, чтобы вручную выбрать значение в списке в Excel VBA? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть две пользовательские формы, одна из которых имеет много списков и экспортирует эти данные в другую электронную таблицу. У меня есть вторая пользовательская форма, идентичная первой, однако, когда вы открываете ее, она должна иметь значения каждого списка и текстового поля, автоматически выбираемые из электронной таблицы. Затем, когда вы завершите его, он по существу должен заменить прежнюю позицию. (Пример: если я редактирую план изначально в строке 35, он заменит данные оттуда и заполнит их). Моя проблема заключается в том, что когда я нажимаю кнопку Отправить, если я не коснулся некоторых из этих списков (поскольку нет необходимости их редактировать), значения в таблице исчезают.

Я провел несколько тестов, чтобы выяснить, скрывает ли оно значение или что-то еще, и определил, что это значение списков или "" по какой-то причине, если только я не нажму другое значение или даже то же значение. Мне просто нужно щелкнуть значение внутри списка, чтобы оно появилось в электронной таблице. Я попытался включить функцию Listbox.Select, но безрезультатно, так как я не знал, как по существу «сохранить» данные из предыдущей строки.

Private Sub UserForm_Initialize()

Dim activeRow As Long
activeRow = WorksheetFunction.Match(PlanName_text.Value, Range("B:B"), 0)

'Clear FinalForm_list
FinalForm_list.Clear

'Fill FinalForm_list
With FinalForm_list
    .AddItem "2018"
    .AddItem "2019"
    .AddItem "2020"
    .AddItem "2021"
    .AddItem "2022"
    .AddItem "2023"
End With

'Sets Final Form Year equal to what the spreadsheet says
FinalForm_list.Value = Cells(activeRow, 11).Value

End Sub
Private Sub complete_active_Click() 'complete_active = "done" button

Dim activeRow As Long
activeRow = WorksheetFunction.Match(PlanName_text.Value, Range("B:B"), 0)


Cells(activeRow, 11).Value = FinalForm_list.Value

Unload Me
End Sub

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

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