説明を書くのが苦手です、なので箇条書きで書かせていただきます。
1.VBAで構造体内の一項目を使用して構造体全体をソートさせるのはどうすればいいでしょうか?
構造体のコード
VBA
1 Public Const ranking_table_y_max = 4000 2 Public Const ranking_table_x_max = 10 3 4 Type ranking_table 5 officename As String '事業所名 6 sei_corporationname As String '法人正式名 7 corporationname As String '法人名 8 corporationno As Long '法人番号 9 zen_salesamount As Currency '前年売上高 10 kon_salesamount As Currency '当年売上高 11 12 End Type 13 Public ranking(0 To ranking_table_x_max, 0 To ranking_table_y_max) As ranking_table '地区と法人 14 'rankingの部分が配列名 15
2.下記のようにソートのプログラムを書いてみたのですが、値は動きましたが、ソートされませんでした。
※https://excel-ubara.com/excelvba5/EXCELVBA229.html こちらのサイトを参考しました。
VBA
1 Public Function zyun_csvimport_Sort() As Boolean 2 On Error GoTo Sort_ERROR 3 4 5 Dim vSwap As ranking_table 6 Dim i As Long 7 Dim j As Long 8 Dim k As Integer 9 Dim keyPos As Long: keyPos = 1 10 11 12 13 For i = LBound(ranking, 1) To UBound(ranking, 1) 14 For j = LBound(ranking) To UBound(ranking) - 1 15 If ranking(j, keyPos).kon_salesamount < ranking(j + 1, keyPos).kon_salesamount Then 16 For k = LBound(ranking, 2) To UBound(ranking, 2) 17 vSwap = ranking(j, k) 18 ranking(j, k) = ranking(j + 1, k) 19 ranking(j, k) = vSwap 20 Next 21 End If 22 Next j 23 Next i 24 25 zyun_csvimport_Sort = True 26 Exit Function 27Sort_ERROR: 28 zyun_csvimport_Sort = False 29 MsgBox "zyun_csvimport_Sort(ソート部分)でエラー" 30 End Function 31
ソートに入る前の部分のコード
VBA
1 Close #filenumber 2 'ソート部分-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 3'ここまでは動きます。 *********************************↓ 4 If zyun_csvimport_Sort() = False Then 5 Else 6 End If 7 8 Debug.Print "zyun_csvimport_Sort" 9 10 '出力部分-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 11 zyun_csvimport = True 12 MsgBox "正常終了しました" 13 Exit Function 14csvimport_ERROR: 15 zyun_csvimport = False 16 MsgBox "zyun_csvimportでエラー" 17End Function 18コード
回答3件
あなたの回答
tips
プレビュー