VBA ListView 열 정열 문제
아래 그림과 같이
No 열 부분에 숫자가 들어가는데요
컬럼헤더 클릭할때 정열이 잘 되지 않고 아래 그림처럼 되네요
제가 알기로는 ListView 자체가 데이터를 String으로 처리하기 때문에 그러는거 같은데.....
자료나 정보도 부족한거 같고, 이것을 어떻게 해야 정열이 되는지 도무지 모르겠습니다 ???
정열 할 수 있는 방법을 가르쳐 주세요
|
|
이준호리 2010-07-22 12:07 |
http://msdn.microsoft.com/en-us/library/aa443195 http://msdn.microsoft.com/en-us/library/aa443493 컬럼1은 디폴트라 하니 컬럼1을 추가하고 컬럼2에 일련번호를 쓰세요. |
|
|
아킴 2010-07-26 11:22 |
감사합니다. 이준호리님 덕분에 많은 공부를 합니다. 기초도 튼튼해야 겠지만 응용력을 많이 필요로 하군요 암튼, .... 여러모로 알아본 결과 제 짧은 생각엔 ListView가 String으로 처리한다는데 기인하는거 같습니다. 여러 기초 자료로 코딩을 해보았습니다. 컬럼1 뿐만이 아니라 여러 컬럼의 소팅에 적용되는 것을 보았습니다. 결과는 만족스럽긴한데 코딩이 다소 무식한감이 없잖아 있네요 선배님들이 이 코딩을 손질해 주신다면 다시 한번 응용력을 키울 수 있지 않을까 하고 올려봅니다. Private Declare Function LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) If ColumnHeader.Index = 1 Then LockWindowUpdate ListView1.Hwnd For i = 1 To ListView1.ListItems.Count ListView1.ListItems.Item(i).Text = Format(ListView1.ListItems.Item(i).Text, "0000000") Next With ListView1 If .SortOrder = lvwAscending Then .SortOrder = lvwDescending Else .SortOrder = lvwAscending End If .SortKey = ColumnHeader.Index - 1 .Sorted = True End With For i = 1 To ListView1.ListItems.Count ListView1.ListItems.Item(i).Text = Val(ListView1.ListItems.Item(i).Text) Next LockWindowUpdate 0& ElseIf ColumnHeader.Index > 6 Then LockWindowUpdate ListView1.Hwnd For i = 1 To ListView1.ListItems.Count ListView1.ListItems.Item(i).SubItems(ColumnHeader.Index - 1) = Format(ListView1.ListItems.Item(i).SubItems(ColumnHeader.Index - 1), "0000000") Next With ListView1 If .SortOrder = lvwAscending Then .SortOrder = lvwDescending Else .SortOrder = lvwAscending End If .SortKey = ColumnHeader.Index - 1 .Sorted = True End With For i = 1 To ListView1.ListItems.Count ListView1.ListItems.Item(i).SubItems(ColumnHeader.Index - 1) = Format(Val(ListView1.ListItems.Item(i).SubItems(ColumnHeader.Index - 1)), "#,###") Next LockWindowUpdate 0& Else With ListView1 If .SortOrder = lvwAscending Then .SortOrder = lvwDescending Else .SortOrder = lvwAscending End If .SortKey = ColumnHeader.Index - 1 .Sorted = True End With End If End Sub |
다음검색







이준호리