Excel VBA Auto Resize ListView Columns
Я нашел код, чтобы изменить размер столбцов ListViews на основе самой длинной строки в элементах столбца, но я хотел бы изменить его, чтобы он также учитывал длину имени столбца, а также для изменения размера. У меня есть несколько столбцов, где самая длинная строка – это имя столбца.
Я искал во всем Google, чтобы попытаться понять это, но я действительно не понимаю используемый здесь API.
Расширение этого вопроса также было бы тем, что LVM_FIRST
делает LVM_FIRST
, я не мог найти ничего в моих поисках.
- Как я могу экспортировать данные из listview в excel и pdf в VB.NET
- Excel VBA ListView.ListItem.Selected Property
- ListView не экспортирует данные правильно в Excel
- Загрузка нескольких элементов из листа excel в listview c #
- Недостающее значение при экспорте списка в файл xls в c #
Декларация:
Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Private Const LVM_FIRST = &H1000
Sub:
Public Sub LV_AutoSizeColumn(LV As ListView, Optional Column _ As ColumnHeader = Nothing) Dim C As ColumnHeader If Column Is Nothing Then For Each C In LV.ColumnHeaders SendMessage LV.hWnd, LVM_FIRST + 30, C.Index - 1, -1 Next Else SendMessage LV.hWnd, LVM_FIRST + 30, Column.Index - 1, -1 End If LV.Refresh End Sub
- Скопировать список с меньшим количеством столбцов
- Получить элементы из всех столбцов в ListView
- Экспорт ListView в Excel - Борьба с болезненной производительностью
- Excel VBA Setting ListView Полоса прокрутки
- EXCEL VBA: функция объекта Listview не найдена при экспорте XLAM-файла на другой компьютер
- Listview не экспортирует столбцы в excel
- как я могу создать файл excel в asp.net из списка?
- Ищете альтернативы 32-разрядным Microsoft Common Controls (ListView)
LVM_FIRST + 30
– это сообщение LVM_SETCOLUMNWIDTH
которое устанавливает ширину данного столбца.
-1
– LVSCW_AUTOSIZE
который сообщает LVSCW_AUTOSIZE
управления изменять размер в зависимости от содержимого. Если вы переключились на -2
( LVSCW_AUTOSIZE_USEHEADER
), элемент управления LVSCW_AUTOSIZE_USEHEADER
размер на текст заголовка.
Установите оба в вашем цикле, отметив, что результат больше ширины столбца столбца, а затем SendMessage
снова с соответствующим аргументом LVSCW_
.