Excel VBA Auto Resize ListView Columns

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

Я искал во всем Google, чтобы попытаться понять это, но я действительно не понимаю используемый здесь API.

Расширение этого вопроса также было бы тем, что LVM_FIRST делает 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 

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 

LVM_FIRST + 30 – это сообщение LVM_SETCOLUMNWIDTH которое устанавливает ширину данного столбца.

-1LVSCW_AUTOSIZE который сообщает LVSCW_AUTOSIZE управления изменять размер в зависимости от содержимого. Если вы переключились на -2 ( LVSCW_AUTOSIZE_USEHEADER ), элемент управления LVSCW_AUTOSIZE_USEHEADER размер на текст заголовка.

Установите оба в вашем цикле, отметив, что результат больше ширины столбца столбца, а затем SendMessage снова с соответствующим аргументом LVSCW_ .

  • Элемент управления Excel VBA Excel дает ошибку «Недопустимое значение свойства» при установке ширины
  • Размеры столбцов ручного размера ListView (Excel)
  • отображать элементы списка в листе excel
  • Экспортировать элементы списка в excel, получая подэлементы, не являющиеся членами ошибки listviewItem
  • VBA ListView поддерживает предыдущее значение, если новое значение является пустой строкой
  • Экспорт формата ListView в Excel
  • vb.net Запуск процесса как другой пользовательский документ Excel 2013 как аргумент из ListView - заблокирован файл
  • Listview на рабочем листе не может вставить ошибку объекта Excel 2010
  • Я продолжаю получать System.Runtime.InteropServices.COMException (0x80028018): старый формат или недопустимая библиотека типов. ошибка
  • Создавать excel из списка android listview
  • Событие Listview _ItemClick не срабатывает (XL2007)
  • Interesting Posts

    Цикл VBA выходит из строя вокруг 88-й итерации

    Открыть и закрыть файл Excel с помощью планировщика задач с пользователем AD

    Определить различные диапазоны для следующего цикла

    Код Excel VBA для копирования и вставки строк в новый лист

    Используя VBA для умножения всех ячеек, которые являются форматом (%) в листе на 100, а затем преобразовываются в формат (Число)

    Неверное формирование времени в локали Excel

    VBA: пользовательский тип не определен MSXML2.DOMDocument60

    Создание макроса, что позволяет мне удалять дублирование в других столбцах «только в том случае, если ячейка рядом с тем же номером

    Обработчик ошибок не работает с ошибкой «438 времени выполнения»

    Заполните оставшуюся ячейку, на основе которой введен столбец

    Преобразование большого файла .csv в .prn (около 3,5 ГБ) в Ubuntu с использованием bash

    Самый быстрый способ записи ячеек в Excel с помощью Office Interop?

    Экран подсказки гиперссылки, требующий ремонта рабочей книги

    Определенная пользователем функция VBA для копирования значения, формирования текста и гиперссылки на ячейку?

    VBA Для цикла IF Instr не находит подстроку

    Давайте будем гением компьютера.