ListViewおまじない
ListViewの初期化のコードが冗長でいちいち書くのが面倒なのでプロシージャ化しておいてます。
色々プロパティがあるけどフォントサイズくらいしか変更することないのでフォントサイズだけ。
Sub testListViewおまじない
 Call ListViewおまじない(Me.ListView1, FontSize:=12)
End Sub
Sub ListViewおまじない(myListView As ListView, FontSize As Long)
  With myListView
    .View = lvwReport
    .LabelEdit = lvwManual
    .HideSelection = False
    .AllowColumnReorder = True
    .FullRowSelect = True
    .Gridlines = True
    .Font.Size = FontSize
    .Font = "Meiryo UI"
'    .CheckBoxes = True
    
  End With
End Sub
TextBoxおまじない
ListViewではないけどTextBoxで折り返し設定するのもこれでやってます。
Sub testTextBoxおまじない
  Call TextBoxの設定(Me.TextBox1, True)
End Sub
Sub TextBoxの設定(myTextBox As Variant, 折り返し As Boolean)
  With myTextBox
    If 折り返し = True Then
      .MultiLine = True
      .WordWrap = True
    End If
  End With
End Sub
ListViewのヘッダをクリックしてソートするやつ
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
  Call ListViewをクリック列基準でソートする(Me.ListView1, ColumnHeader)
End Sub
Private Sub ListViewをクリック列基準でソートする(myListView As ListView, _
                                          ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'ListViewのカラムクリック時にクリック列基準でソートする
    With myListView
        .SortKey = ColumnHeader.Index - 1
        .SortOrder = .SortOrder Xor lvwDescending
        .Sorted = True
    End With
End Sub
ListViewの幅をキリよくするやつ
各列幅の合計からキリよくListView全体の幅を調整します。
マジックナンバーが15だったり他の値だったりは環境によりけり?
Private Sub ListViewの列を設定する(myListView As ListView, w非表示列 As Double)
  With myListView
    With .ColumnHeaders
      .Add , "_a", "列a", w非表示列
      .Add , "_b", "列b", 300
      .Add , "_c", "列c", w非表示列
      .Add , "_d", "列d", 400
    End With
    .Width = GetLV幅の合計(myListView, 15)
  End With
  
End Sub
Private Function GetLV幅の合計(myListView As ListView, w余白 As Double) As Double
  Dim ch As ColumnHeader
  Dim buf
  For Each ch In myListView.ColumnHeaders
    buf = buf + ch.Width
  Next
  GetLV幅の合計 = buf + w余白
End Function
コントロール名の前にいちいちMeをつけているのはインテリセンスをコントロールに絞るため。
たった3文字で得られるコスパの良さが気に入ってます。
