Я нашел код, чтобы изменить размер столбцов ListViews на основе самой длинной строки в элементах столбца, но я хотел бы изменить его, чтобы он также учитывал длину имени столбца как ну для изменения размера. У меня есть несколько столбцов, где самая длинная строка - это имя столбца.Excel VBA Auto Resize ListView Columns
Я искал во всем Google, чтобы попытаться понять это, но я действительно не понимаю используемый здесь API.
Расширение на этот вопрос было бы, что такое LVM_FIRST
Здесь я не мог найти ничего в моих поисках.
Декларация:
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
Суб:
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
Im все еще довольно новый на этом. Не могли бы вы рассказать о том, что вы имеете в виду, задав оба варианта и запомните больше, чем отправить сообщение снова. Вы имеете в виду, как хранить большее значение в переменной? – Zionmoose
Я собирался вставить демо, но похоже, что USEHEADER почитает более длинные столбцы, поэтому попробуйте заменить 'SendMessage' у вас с' SendMessage LV.hWnd, LVM_FIRST + 30, C.Index - 1, ByVal -2' –
Это это было. Он работает сейчас. – Zionmoose