vba裏技、技、論理 - シートの並べ替えあいうえお順

顧客の増加に伴って、顧客別の売掛金台帳をシート別に作成していくと、作成順にシートが配置されます。これだとその顧客の売掛金台帳を探すのに手間が掛かります。そこであいうえお順にシートを並び替えておくと便利です。今日はその方法を書いてみます。

 Sheets(“並替”)というシートを準備しておきます。そこにはあらかじめ「連番、シート名、フリガナ」というタイトルを付けた行を作っておきます。今新しくシートが追加されました。下記はそのコーディングです。

vシートの名前 = ActiveSheet.Name

Sheets(“並替”).Select

Cells.Find(“シート名”).End(xlDown).Offset(1).Select

Selection.Value = vシートの名前

Selection.Next.Value = InputBox(“フリガナを入力して下さい”)

Range(Cells.Find(“フリガナ”).Offset(1), Cells.Find(“フリガナ”).End(xlDown)).Select

Selection.EntireRow.Select

Selection.Sort key1:=Cells.Find(“フリガナ”)

Cells.Find(“シート名”).Offset(1).Select

vシートの名前 = Selection.Value

Do

Sheets(vシートの名前).Move before:=Sheets(“並替”)

Sheets(“並替”).Select

If ActiveSheet.Index = Sheets.Count Then

Exit Do

End If

Selection.Offset(1).Select

vシートの名前 = Selection.Value

Loop

Cells.Find(“連番”).Offset(1).Value = 1

Cells.Find(“連番”).Offset(2).Value = 2

Cells.Find(“連番”).Offset(1).Select

Range(Selection, Selection.Offset(1)).Select

Selection.AutoFill Destination:=Range(Selection(1),

Cells(Rows.Count, Selection.Column).End(xlUp))

Sheets(“並替”).Move before:=Sheets(1)

① シート名は会社名が漢字で書かれていることが多いので、あいうえお順の読み方は音読みになるので、フリガナを振っておきます。そうしないと並ぶ順番が音読みの順番になるので、並び替えをしてもあまり意味がないことになります。

② シートが一番前から何個目に配置されているかは「index」で表示されます。

③ 「sheets.count」はそのブックの全てにシートの数です。

④ 並び替えはフリガナによって行われます。それが「key1=cells.find(“フリガナ”)です。

⑤ 最後に「sheets(“並替”)」を一番最初に持って来ておかなければ次にシートが追加されたときにコマンドが上手く作動しません。

⑥ 連番をシート名の前に振っておくと、そのシートが何番目に出てくるか分かり便利です。

⑦ 「sheets(“並替”)」を参照することによりどのような名前の会社に売掛金台帳があるか分かるので、顧客管理の一助にもなります。

⑧ 「autofill」は顧客台帳のシートの前にはまだ連番が振ってないので、連番の列には空白があります。しかし連番は一番最後まで振らなければならないので、「シート名」の最後まで行きその一つ左の戻る必要があります。

⑨ 「next」は指定されているセルの一つ右を表し、「previous」は一つ左を示します。もし二つ右を表したいなら「selection.next.next」と書けばいいのです。

⑩ 「if activesheet.index=sheets.count」は「if activesheet.name=sheets(sheets.count).name」

とも書けますが、字数が多いので、「if activesheet.index=sheets.count」と書きました。研究していませんが他にも書き方はある筈です。

⑪ 「do loop」の中の「if end if」クローズとそれ以降を逆に書くとエラーになるので注意して下さい。

⑫ もしシートを名前と逆順に配置したければ「move before:=」を「move after:=」にすれば目的が達成できます。

何度も言っていますが、書き方を丸暗記せずに論理的に考えて書いて下さい。そうすると書き方が分からなくても、自分で創作することもできるようになります。

プログラマーは40歳までしかできないと聞いたことがありますが、私は70歳を優に超えています。そんな私でもプログラムは組めます。論理的な思考をすればどんなことでも、丸暗記より効率が良いのです。

酒巻 修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

人三化七

次の記事

花見の寿司屋