[[20170618125006]] 『ユーザーフォーム起動時、ListView1を降順に表示ax(takesi) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォーム起動時、ListView1を降順に表示をさせるには』(takesi)

いつも参考させていただいています。
今回の質問ですが、ユーザーフォームを起動し
ListView1の表示を最初から降順で表示させることは
できないかの相談です。
Private Sub ListView1_ColumnClickで降順にできるのですが
最初から降順の方が便利なので・・・
よろしくお願いします。

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

    With ListView1
      .Sorted = False
      If .SortKey <> ColumnHeader.Index - 1 Then
          .SortKey = ColumnHeader.Index - 1
          .SortOrder = lvwAscending
      Else
          If .SortOrder = lvwAscending Then
              .SortOrder = lvwDescending
          Else
              .SortOrder = lvwAscending
          End If
      End If
      .Sorted = True
    End With
End Sub

Private Sub UserForm_Activate()

    Dim DBpath As String
    Dim i As Long

      With ListView1
        ''プロパティ
        .View = lvwReport
        .LabelEdit = lvwManual
        .HideSelection = False
        .AllowColumnReorder = True 
        .FullRowSelect = True
        .Gridlines = True ''グリッド線

        .ColumnHeaders.Add , "_nengaltupi", "年月日", 80
        .ColumnHeaders.Add , "_hurikomisaki", "振込先", 180
        .ColumnHeaders.Add , "_koumei", "銀行名", 100
        .ColumnHeaders.Add , "_sitenmei", "支店名", 80
        .ColumnHeaders.Add , "_siharaikingaku", "振込金額", 105
        .ColumnHeaders.Add , "_anzen", "会費", 80
        .ColumnHeaders.Add , "_sousai", "相殺額", 80
        .ColumnHeaders.Add , "_utiwake", "相殺内", 114
        .ColumnHeaders.Add , "_tesuuryou", "手数料", 70

        End With

        With ListView1
            For i = 3 To Sheets("一覧").Range("B" & Rows.Count).End(xlUp).Row

            With .ListItems.Add(Text:=Sheets("一覧").Cells(i, 2).Value)
                .SubItems(1) = Sheets("一覧").Cells(i, 4).Value
                .SubItems(2) = Sheets("一覧").Cells(i, 5).Value
                .SubItems(3) = Sheets("一覧").Cells(i, 6).Value
                .SubItems(4) = Format(Sheets("一覧").Cells(i, 7).Value, "#,##0")
                .SubItems(5) = Format(Sheets("一覧").Cells(i, 13).Value, "#,##0")
                .SubItems(6) = Format(Sheets("一覧").Cells(i, 12).Value, "#,##0")
                .SubItems(7) = Sheets("一覧").Cells(i, 11).Value
                .SubItems(8) = Format(Sheets("一覧").Cells(i, 8).Value, "#,##0")
                End With
ListView1.ColumnHeaders.Item(1).Alignment = lvwColumnLeft
ListView1.ColumnHeaders.Item(2).Alignment = lvwColumnLeft
ListView1.ColumnHeaders.Item(3).Alignment = lvwColumnLeft
ListView1.ColumnHeaders.Item(4).Alignment = lvwColumnLeft
ListView1.ColumnHeaders.Item(5).Alignment = lvwColumnRight
ListView1.ColumnHeaders.Item(6).Alignment = lvwColumnRight
ListView1.ColumnHeaders.Item(7).Alignment = lvwColumnRight
ListView1.ColumnHeaders.Item(8).Alignment = lvwColumnLeft
ListView1.ColumnHeaders.Item(9).Alignment = lvwColumnRight
          Next
      End With
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 >Private Sub ListView1_ColumnClickで降順にできるのですが 

 ・・なら、それを強制的にCallすればいいと思うのですが、
 多分、ダメな訳があるんでしょうね?

 その訳とは何でしょうか?

(半平太) 2017/06/18(日) 18:08


(半平太)さん
ありがとうございます。
>それを強制的にCallすればいいと思うのですが、
とは?
どのように・・・
callと言っても
Private Sub ListView1_ColumnClickは
全ての列が対象になるので
年月日の部分を降順としたいのですが
よろしくお願いします。

(takesi) 2017/06/18(日) 19:19


 一つだけなら、Callは忘れて、直接操作すればいいんじゃないですか?

 >          ListView1.ColumnHeaders.Item(9).Alignment = lvwColumnRight
 >      Next
 >  End With

      ↓

             ListView1.ColumnHeaders.Item(9).Alignment = lvwColumnRight
         Next

        '年月日の部分は初めから降順にする
         .SortKey = .ColumnHeaders("_nengaltupi").Index - 1
         .SortOrder = lvwDescending
         .Sorted = True
     End With

(半平太) 2017/06/18(日) 20:39


(半平太)さん
こんなことできるんですか
勉強になりました。
ありがとうございました。
(takesi) 2017/06/19(月) 01:39

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.