Я недавно закодировал пользовательскую форму, чтобы включить заголовки, и я могу ответить на этот вопрос для вас.
Существует только 1 способ заполнить заголовки в ListBox, и это при использовании свойства ListBox1.RowSource. В свойстве RowSource вы должны назначить Range, это один из примеров:
UserForm1.ListBox1.RowSource = "Sheet1!A2:H20"
Это заполняет данные от A2 до H20 в ListBox1, и если для свойства ListBox1 ColumnHeaders установлено значение True, то что-либо на Sheet1! A1: H1 станет заголовком. Это единственный способ.
Причина, по которой многие пользователи скажут вам просто добавить текстовые метки поверх ListBox, чтобы сделать его проще, заключается в том, что когда вы делаете свой список с помощью RowSource, вы всегда должны выяснить, какая последняя строка используется в вашем диапазоне перед тем, как Вы назначаете Range, чтобы избежать пустых строк в вашем ListBox. Это означает, что если у вас есть 20 строк данных и вы назначаете диапазон, содержащий 50 строк, список будет заполнен 50 строками, а последние 30 будут пустыми.