シートタブの操作関係
ここで用いるのはSheetsオブジェクト関連です。
なにか操作する場合はSheetsオブジェクトのメソッド
情報を得る場合はSheetsオブジェクトのSheetsプロパティ
になります。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sheets
なにか操作する場合はSheetsオブジェクトのメソッド
情報を得る場合はSheetsオブジェクトのSheetsプロパティ
になります。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sheets
この例は単純に、現在のシートタブの情報を取得して、表示しています。
●処理の概要
1)全シート数の取得 countプロパティ
Worksheets.Count
2)シート名の取得(配列に取り込む)nameプロパティ
stagn(k) = Worksheets(k).Name
3)シート上に表示
Worksheets("sheet1").Cells(10 + s, 2) = stagn(s)
1)全シート数の取得 countプロパティ
Worksheets.Count
2)シート名の取得(配列に取り込む)nameプロパティ
stagn(k) = Worksheets(k).Name
3)シート上に表示
Worksheets("sheet1").Cells(10 + s, 2) = stagn(s)
以下、そのコードです。
シートタブ情報の取得(ダウンロード)
並べ替え前 | 並べ替え後 |
---|---|
先ほどのシートタブの情報を取得て、それを元に実際のタブを並び替えます。
並び替えの処理は、配列変数に取り込んでやる方法もありますが、ここでは一旦シート上にデータを展開して元々のExcelの並べ替え機能を使います。 数多くのシートを整然と扱うには必須の処理となります。
ここで用いるのはSortFields.Add2 メソッドです。
並び替え処理をマクロの記録をしてみるとこのメソッドが出てきます。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sortfields.add2
並び替え処理をマクロの記録をしてみるとこのメソッドが出てきます。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sortfields.add2
1)タブ情報を取得
2)データを一旦シート上に展開
3)Excelの並び替え機能で並び替える(昇順xlAscending、降順xlDescending)
Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("B11:B29"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
4)並び替えたデータをもとにタブの並び替え処理を行う
tsnme = Worksheets("Sheet1").Cells(k + 10, 2) 'シート名の一時収容
Worksheets(tsnme).Move Before:=Worksheets(k) 'シートの並びに反映
2)データを一旦シート上に展開
3)Excelの並び替え機能で並び替える(昇順xlAscending、降順xlDescending)
Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("B11:B29"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
4)並び替えたデータをもとにタブの並び替え処理を行う
tsnme = Worksheets("Sheet1").Cells(k + 10, 2) 'シート名の一時収容
Worksheets(tsnme).Move Before:=Worksheets(k) 'シートの並びに反映
以下、そのコードです。(昇順)
シートタブの整列(ダウンロード)
並べ替え前 | 並べ替え後(一部固定) |
---|---|
シートタブの並べ替えをすると、シートの把握がやりやすくなりますが、場合によりメインのシートが思いもよらない場所になってしまう場合があります。 その様な場合、特定のシートの位置を決め打ちで固定することが出来ます。
今回の例 はsheet1を左端に固定します。この様にメインのシートを固定しておけば、シートを追加したり、ソートしたりしてもメインのシートは常に左端にあり操作性が良くなります。
●特定シートを固定する(以下の場合は固定シートは"Sheet1"、"原票"とする)
1)1番目の固定設定(左端)
Worksheets("Sheet1").Move Before:=Worksheets(1)
2)2番目の固定設定(左端から2番目)
Worksheets("原票").Move Before:=Worksheets(2)
この様に固定化するシートは自由に設定出来ます。
1)1番目の固定設定(左端)
Worksheets("Sheet1").Move Before:=Worksheets(1)
2)2番目の固定設定(左端から2番目)
Worksheets("原票").Move Before:=Worksheets(2)
この様に固定化するシートは自由に設定出来ます。
単純化するため固定するシートを"sheet1"のみの場合の例を示します
以下、そのコードになります。(情報取得の部分)
以下、そのコードになります。(並べ替えの部分 昇順の場合)
シートタブの固定(ダウンロード)
追加前 | 追加後(一部コピー) |
---|---|
上記の操作(情報取得、並び替え、固定)を踏まえてさらにシートの追加やコピーをする処理を説明します。
この場合は、「main」と「原紙」シートを固定した状態で、シートの単純追加(空のシート追加)や原紙シートをコピーして新たなシートを追加する処理を行います。
まずは「シートの追加」です。単純に空のシートを追加します。
ここで用いるのはWorksheets.addメソッドになります。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sheets.add
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.sheets.add
●シートを追加する
構文
Worksheets.Add (Before, After, Count, Type)
以下、シートの追加のコードです。構文
Worksheets.Add (Before, After, Count, Type)
今度は、原紙をコピーしてそのシートを追加します。
ここで用いるのはWorksheets.Copy メソッドになります。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheets.copy
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheets.copy
●シートをコピーする
構文
Worksheets.Copy(Before, After)
以下、シートのコピーのコードです。構文
Worksheets.Copy(Before, After)
さらに、シートの削除を行います。
この場合、シート総数を取得してその情報を元に一番右端のシートを削除します。
ここで用いるのはWorksheets.Copy メソッドになります。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.delete
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.delete
●シートを削除する
構文
Worksheets.delete
以下、シートの削除のコードです。構文
Worksheets.delete
以上の操作を踏まえて、まとめたものを下記のファイルにしています。
シートタブの操作(追加、コピー、削除)(ダウンロード)
以上のTIPSをまとめたファイルです。お時間の無い方におまとめ編です。 いつも同じタブ位置の固定シート(main、原紙)と、追加やコピーされる変動シートがありあす。 実運用ではこの様に、固定されたシートと変動するシートがある様な状態になる場合が多いと思います。