[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートのソート』(Null)
シート名称が
ID1 ID2 ID3
などと付いていて それが
ID1 ID3 ID2
というように 順番に並んでいないときに一括でソートする機能はないでしょうか?
ご教授お願いいたしますmm
ベタですが。
Sub Test()
Dim i As Integer
Application.ScreenUpdating = False
Sheets.Add
ActiveSheet.Name = "Kari"
For Each Sh In Worksheets
Worksheets("kari").Cells(i + 1, 1).Value = Sh.Name
i = i + 1
Next Sh
Range("A1").Sort Key1:=Range("A1"), Orientation:=xlTopToBottom
For i = 1 To Worksheets.Count
MyName = Worksheets("Kari").Cells(i, 1).Value
Worksheets(MyName).Move Before:=Sheets(i)
Next i
Application.DisplayAlerts = False
Sheets("Kari").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
(川野鮎太郎)
マクロしかないのであれば一応挑戦
Sub シートの並び替え()
Dim ShName As String, T() As String, s() As String
Dim ss(1) As Integer
ss(1) = 32
T = Input_Name()
T = Sort_Name(T)
Call move_Name(T)
MsgBox ("Complete")
End Sub
Function Input_Name()
Dim n As Worksheet
Dim T() As String
ReDim T(1 To ActiveWorkbook.Worksheets.Count) As String
For Each n In ActiveWorkbook.Worksheets
If Left(n.Name, 1) = "x" Then
T(n.Index) = n.Name
Else
T(n.Index) = "none"
End If
Next
Input_Name = T
End Function
Function Sort_Name(T() As String)
Dim n As Integer, s As Integer
Dim Ttable() As String, T_temp As String
ReDim Ttable(1 To UBound(T)) As String
For n = 1 To UBound(T) - 1 Step 1
For s = n To UBound(T) Step 1
If Ttable(n) < T(s) And Not T(s) = "none" Then
T_temp = Ttable(n)
Ttable(n) = T(s)
T(s) = T_temp
End If
Next s
Next n
Sort_Name = T
End Function
Function move_Name(T() As String)
Dim n As Integer
Dim e As Worksheet
Application.ScreenUpdating = False
For n = 1 To UBound(T) Step 1
If Not T(n) = "" Then
For Each e In ActiveWorkbook.Worksheets
If Sheets(n).Name = e.Name Then
e.Move Before:=Sheets(1)
End If
Next e
End If
Next n
Application.ScreenUpdating = True
End Function
(川野)さんの ソースよりぜんぜん長いですねorz シートを作っちゃえばソート機能をつかえるわけですね(≧∇≦)b 微調整しつつ がんばります ありがとうございましたぁ (Null)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.