エクセルVBAでの並び替え結果を、簡単に解除、元に戻すことが出来るリスタート機能の説明です。
この機能を使えば、すぐに次の別キーでの並び替えを再実行出来ます。
こんにちは じゅんぱ店長 (@junpa33) です。
VBAを使って、エクセルのセルデータの並び替えを行うツールを作成しています。
今回は、すでに行った並び替えを解除して、最初の状態に戻すことが出来る「リスタート機能」について説明します。
この機能を発揮させるためには、いくつかの条件が必要ですが使って便利な機能になります。
エクセルの標準の並び替えツールでは装備されていない機能です。
並び替えマクロ 記事階層
- マクロツール使い方と無料ダウンロード
- マクロツール作成手順
- 並び替えマクロを作成するVBAコードの概要
- 条件設定ボタンとボックスを配置するユーザーフォームのデザイン
- UserFormに設置したコントロールのイベントコードを記述する
- 別シートにまたぐのは可能?並び替えのコード設計
- 条件入力用のユーザーフォーム 表示・非表示と値の保存
- セル範囲内の空白行や結合にも対応したSortオブジェクトVBA
- 複数列に自由にキーを設定するVBA。Sort条件設定のコード
- 複数の背景色キーを指定できるVBAコードの組み立て
- 種類の違うKeyの同時指定はどちらが優先?VBAでは記述順
- 共有できない問題も解決!ユーザー設定リストの外部ファイル導入法
- 複数条件をまとめるプロシージャーを作成する
- 結果の切り出し機能 必要範囲をコピーし別シートに張付け
- 簡単に並びを解除するリスタート機能。再実行も即可能になる
- 並び替えマクロツール作成の全コード集
- 並び替えマクロを作成するVBAコードの概要
- 実際に使ってみる
この記事の番号は12番です。
コンテンツ
リスタート機能とは
リスタート機能とは、「再実行」機能ということです。
同じデータ資料について、何度も、並び替えを行ないたい時には、そのたびに並び順を元の最初の状態に戻さないといけません。
この作業は結構面倒で、リバース手順を間違えれば、もつれた糸の様に余計にデータ並びが絡まってしまいます。
でも、このリスタート機能を使えれば、1クリックで元の最初の状態に戻すことが出来ます。
リスタート機能は、エクセルシートでA列基準で昇順並びに1クリックで戻す機能です。
リスタート機能を使うためには、前提条件(必要条件)があります。
- 対象シートが「A列基準で昇順並び」がデフォルト状態になっている。(ここから、並び替えがスタートしている)
リスタート機能使用時にも条件があります。
- A列がID番号などの並び替え可能な数値になっている。
- 適用される範囲は、A1セルから空白行、空白列に当たるまでのエリアに適用される。
- エリア内の結合セルがある場合は、リスタート機能が実行されない。
- 並び替え範囲を「部分範囲指定」した場合はリスタート機能は無効になる。
リスタート機能のプロシージャー
「リスタート実行」としてプロシージャーを作成しています。
Sub リスタート実行()
ErEnd = False
Dim ANS, Ans1 As Long
If AreaVAlert = True Then
MsgBox "並び替えの部分指定でデータ幅不一致の場合は、" _
& "この機能は使用できません。"
Exit Sub
End If
DataSN = ws.Name
If DataNSN <> DataSN Then
MsgBox "シートが変更されましたので、並び替えデータ" _
& "シート全体のチェックが必要です。" & vbCrLf & _
"「並び替えデータシート全体チェック」をまず実行" _
& "してください。", vbInformation, "実行するには・・"
Exit Sub
End If
If ADRange Is Nothing Then
MsgBox "並び替えデータシート全体のチェックが必要です。" _
& vbCrLf & "「並び替えデータシート全体チェック」を" _
& "まず実行してください。" _
, vbInformation, "実行するには・・"
Exit Sub
End If
If ErEnd = True Then
MsgBox "この操作は、条件設定の不備により実行されません。"
Exit Sub
End If
On Error Resume Next
With ws
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A1"), Order:=xlAscending
.Sort.SetRange ADRange.CurrentRegion
With ソートナビゲーター
If .先頭行は見出し行 = True Then
ws.Sort.Header = xlYes
ElseIf .先頭行はデータ行 = True Then
ws.Sort.Header = xlNo
Else
MsgBox "先頭行のタイプを選んでください。" _
, vbExclamation, "再試行"
Exit Sub
End If
End With
Ans1 = MsgBox("A列基準で昇順並び替えを実行します。よろしい" _
& "ですか?", vbOKCancel + vbExclamation, "実行確認")
If Ans1 = 2 Then
MsgBox "承知しました中止します。"
Exit Sub
Else
.Sort.Apply
End If
End With
On Error GoTo 0
End Sub
If AreaVAlert = True Then は、
並び替えデータ範囲環境の指定でパターン④を選択している場合は、そもそもA列が並び替え範囲内にあるかどうか不定になります。
したがって、このパターン④選択時にはこのリスタート機能はOFFになる様にセットしています。
If DataNSN <> DataSN Then は、
初期設定の「データシート全体チェック」を行ったシートとリスタート機能を使用するシートが異なる場合は、そのままではリスタートを実行できないようにしています。
リスタートを実行するシートで「データシート全体チェック」を行う必要があります。
If ErEnd = True Then は、
並び替え実行時にその条件設定などで、条件入力ウインドウの「キャンセル」ボタンをクリックして並び替え中止した場合に設定した条件です。
この場合も、条件設定不備としてリスタート機能を実行することが出来ません。
このプロシージャーを実行するためには、前提の条件を色々設定していますが、
要するに、A列の数値キーを基準に、セルA1より昇順の並び替えを行なっています。
まとめ
リスタート機能を利用するには、少し前提条件が必要になっています。
その条件が整っていないと・・・ということではありますが、基本、よく使う並び替えのパターンで有ればそんなには問題は無いのではないでしょうか。
つまり、
「A1セルがスタートでA列はデータID番号にしておく。」
があれば、ほぼ利用可能ということです。
部分並び替えを行った場合は、部分並び替えで元に戻すようにしてください。その場合は、元並びが復元できるデータID番号などがその並び替え範囲内にある必要があります。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。