掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
モジュールを作成するには? (ID:78556)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
作成したプログラムを使い回しが聞くようにするために、プログラムを独立したモジュールにしたいのですが、そのプログラムの中にフォームのオブジェクト(と、いうのでしょうか?)が含まれている場合、どのようにモジュールとして、分割するべきなのかわかりません。 これは、ツリービューのノードを利用している時や、リストビューのリストアイテムを利用している時などに頻繁に起こり、今まではあきらめてきました。 以下のプログラムは以前の質問でのものですが、もし、ご面倒でなければ、これからの参考としたいので、これを元に sortNumList() の部分をモジュールに分割していただけないでしょうか? Option Explicit Dim isAsc As Boolean Private Sub Form_Load() Dim li As ListItem Set li = lvwList.ListItems.Add(, , "Test") li.SubItems(1) = FormatCurrency(25.25) Set li = lvwList.ListItems.Add(, , "TAKE") li.SubItems(1) = FormatCurrency(10.25) Set li = lvwList.ListItems.Add(, , "AAAA") li.SubItems(1) = FormatCurrency(35.55) Set li = lvwList.ListItems.Add(, , "BBB") li.SubItems(1) = FormatCurrency(5.55) Set li = lvwList.ListItems.Add(, , "ZZZ") li.SubItems(1) = FormatCurrency(125.55) End Sub Private Sub lvwList_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) If ColumnHeader.Index = 1 Then lvwList.Sorted = True sortList (ColumnHeader.Index) Else lvwList.Sorted = False sortNumList End If End Sub Private Sub sortNumList() Dim i As Integer 'index Dim j As Integer 'index Dim li As ListItem 'list item Dim intMin As Double 'minimum value Dim intMax As Double 'maximum value Dim intRemovedRow As Integer 'row number to be removed Dim intCount As Integer 'the number of row listed intCount = lvwList.ListItems.Count If isAsc = False Then For i = 1 To lvwList.ListItems.Count 'Set dammy minimum value intMin = 100000 For j = 1 To intCount 'Check if the item is minimum If lvwList.ListItems(j).SubItems(1) < intMin Then intMin = lvwList.ListItems(j).SubItems(1) intRemovedRow = j End If Next isAsc = True 'Add new list item Set li = lvwList.ListItems.Add(, , lvwList.ListItems(intRemovedRow)) li.SubItems(1) = lvwList.ListItems(intRemovedRow).SubItems(1) 'Remove old list item lvwList.ListItems.Remove (intRemovedRow) intCount = intCount - 1 Next Else For i = 1 To lvwList.ListItems.Count 'Set dammy maximum value intMax = 0 For j = 1 To intCount 'Check if the item is minimum If lvwList.ListItems(j).SubItems(1) > intMax Then intMax = lvwList.ListItems(j).SubItems(1) intRemovedRow = j End If Next isAsc = False 'Add new list item Set li = lvwList.ListItems.Add(, , lvwList.ListItems(intRemovedRow)) li.SubItems(1) = lvwList.ListItems(intRemovedRow).SubItems(1) 'Remove old list item lvwList.ListItems.Remove (intRemovedRow) intCount = intCount - 1 Next End If End Sub Private Sub sortList(ColumnHeaderIndex As Integer) If lvwList.SortKey = ColumnHeaderIndex - 1 Then If lvwList.SortOrder = lvwAscending Then lvwList.SortOrder = lvwDescending Else lvwList.SortOrder = lvwAscending End If Else lvwList.SortKey = ColumnHeaderIndex - 1 lvwList.SortOrder = lvwAscending End If End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.