シートをシート名でSortするモジュールです。
Sub SP_8530SheetSortNomi(obj対象ブック As Object)
'*****************************************************
'@ 指定ブックのシートをシート名でソートする
'* [INPUT] obj対象ブック As Object '==ブックオブジェクト
'*****************************************************
Dim intShtLoop As INTEGER
Dim strTNam As String
Dim strW As String
DIM intShtName_Su AS INTEGER '==シート数
DIM strShtName(1 TO 512) AS STRING '==シート名
'***シート名の取得()
intShtName_Su = 0
For intShtLoop = 1 To obj対象ブック.Worksheets.Count
intShtName_Su = intShtName_Su + 1
strShtName(intShtName_Su) = obj対象ブック.Worksheets(intShtLoop).Name
Next
'
'***1シートしかなければここまで
if intShtName_Su = 0 then
EXIT SUB
END IF
'
'***SORT
Call SP_OZSORT_1NOMI(strShtName(), intShtName_Su)
'
'***1つめは一番前に
strTNam = strShtName(1)
obj対象ブック.Sheets(strTNam).Move BEFORE:=obj対象ブック.Sheets(1)
'
'***2つめ以降はその後ろに
For intShtLoop = 2 To intShtName_Su
strW = strShtName(intShtLoop)
obj対象ブック.Sheets(strW).Move after:=obj対象ブック.Sheets(strTNam)
strTNam = strW
Next
'***EXIT
Exit Sub
End Sub
Sub SP_OZSORT_1NOMI(strIOHkey() As String, intInHsu As INTEGER)
'******************************************************************
'@ 昇順ソート : EXCHANGE SORT
'*=================================================================
'* 『input』 strIOHkey() AS STRING '==KEY項目
'* intInHsu AS Integer '==ソート対象データ数
'* 『output』 strIOHkey() AS STING '==ソート後 KEY項目
'******************************************************************
Dim strWs As String
Dim intWi As Long
Dim intWj As Long
'
'***SORT
For intWi = 1 To intInHsu - 1
For intWj = intWi + 1 To intInHsu
If strIOHkey(intWi) > strIOHkey(intWj) Then
strWs = strIOHkey(intWi)
strIOHkey(intWi) = strIOHkey(intWj)
strIOHkey(intWj) = strWs
End If
Next
Next
'
'*** EXIT
Exit Sub
End Sub
テスト用メインです
Sub TestMain()
'*****************************************************
'@ SP_8530SheetSortNomiのテスト用メイン
'*****************************************************
DIM strBookPath AS STRING
DIM obj対象ブック As Object '==ブックオブジェクト
'
'***TEST用データブック
strBookPath = ThisWorkBook.Sheets(1).RANGE("DataPath")
IF strBookPath = "" THEN
MSGBOX "TEST用データブックを指定して下さい"
EXIT SUB
END IF
'
'***TEST用ブックOPEN
SET obj対象ブック = Workbooks.Open(FileName:=strBookPath)
'
'***CALL
CALL SP_8530SheetSortNomi(obj対象ブック)
'
'***後始末
SET obj対象ブック = NOTHING
'
'*** EXIT
Exit Sub
End Sub