EXCEL VBA EXCELの見出し行・列・表 テーブル列・行を簡単に修正・自由に配置換えも可能(タイトル変更修正)
EXCEL VBA EXCELの見出し行・列・表 テーブル列・行を簡単に修正・自由に配置換えも可能(タイトル変更・修正)
今回説明するのは、EXCEL VBAで作成する見出し行を簡単に修正・追加・削除できるサンプルプログラムの説明を致します。EXCELで集計表や一覧表を作成する際に、表に見出しを作成しますが、普通通りにVBAプログラムで見出しを作成してしまうと、万が一見出し内容の変更や列の挿入又は削除をする場合は、セル位置が変わるためプログラムを大幅に変更する必要があります。今回のプログラムでは、見出し位置の変更や見出し行・列の追加・削除にも対応できるプログラムとなっております。それでは、サンプルプログラムを交えて順番に説明いたします。
【下記の見出しを通常に作成した場合と配列を使って簡単に文字・幅・背景色を変更できる仕様のプログラムを2つ作成しました。】
【通常に見出し表タイトルを作成した場合のプログラム】
※(セル位置を修正する場合は、全体的に修正が必要)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
' ' Sub Title_Set00() '列のタイトル A列~E列の1行目に見出し作成。 Cells.Clear 'シートの削除 Cells(1, "A") = "第一四半期" Cells(1, "A").EntireColumn.ColumnWidth = 15 Cells(1, "A").Interior.ColorIndex = 35 Cells(1, "B") = "第二四半期" Cells(1, "B").EntireColumn.ColumnWidth = 15 Cells(1, "B").Interior.ColorIndex = 20 Cells(1, "C") = "第三四半期" Cells(1, "C").EntireColumn.ColumnWidth = 15 Cells(1, "C").Interior.ColorIndex = 35 Cells(1, "D") = "第四半期" Cells(1, "D").EntireColumn.ColumnWidth = 15 Cells(1, "D").Interior.ColorIndex = 20 Cells(1, "E") = "年間" Cells(1, "E").EntireColumn.ColumnWidth = 10 Cells(1, "E").Interior.ColorIndex = 33 End Sub ' |
【配列を使って簡単に見出し修正が出来る場合のプログラム】
※(配列登録順に表示されるので、配列部分のみの修正でOK)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
' ' Sub Title_Set01A() '列のタイトル A列~E列の1行目に見出し作成。(配列使用) Dim SetTitle, SetWide, SetColor As Variant Dim I As Long Cells.Clear 'シートの削除 SetTitle = Array("第一四半期", "第二四半期", "第三四半期", "第四四半期", "年間") ' SetWide = Array(15, 15, 15, 15, 10) SetColor = Array(35, 20, 35, 20, 33) For I = 0 To UBound(SetTitle) Cells(1, I + 1) = SetTitle(I) 'タイトル設定 Cells(1, I + 1).EntireColumn.ColumnWidth = SetWide(I) '列幅設定 Cells(1, I + 1).Interior.ColorIndex = SetColor(I) '背景色設定 Next I End Sub ' |
EXCEL VBA 表の列タイトル(見出し)を配列にて設定(指定位置に作成)
下記のサンプルプログラムは、EXCELの表のタイトルを配列にて設定するサンプルプログラムの説明をいたします。
【基本設定】
●タイトルの設置位置(セル:C5)基準位置
●タイトル:左側より・社員番号、氏名、所属、住所、電話番号 を配列データ(SetTitle)として登録
●列幅:左より・10、15、15、15、15のサイズデータを配列データ(SetWide)として登録
●背景色:左より・35、20、35、20、35の背景色データを配列データ(SetColor)として登録
※上記の条件にて、セルC5を基準に表の列タイトルが表示されました。
※【タイトルを変更する場合】フリガナ列の追加および基準値セル位置の変更(セル:B3)
●タイトルの設置位置(セル:B3)基準位置
●タイトル:左側より・社員番号、氏名、フリガナ、所属、住所、電話番号 を配列データに【フリガナ】を追加
●列幅:左より・10、15、15、15、15、15のサイズデータを配列データに【15】フリガナ幅を追加
●背景色:左より・35、20、33、35、20、35の背景色データを配列データに【33】フリガナ背景色を追加
※プログラムの配列部分を追加又は、削除する事で簡単にタイトル列を追加したり削除する事が可能です。
【プログラムの注意事項】
・配列データを追加・削除する場合は、タイトルデータ・行幅データ・背景色データともに同数に合わせます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
' ' Sub Title_Set01C() '列のタイトルを配列設定・位置変更および追加(フリガナ) Dim SetTitle, SetWide, SetColor As Variant Dim SetCell, Hani As String Dim I As Long Cells.Clear SetCell = "B3" '基準値セル SetTitle = Array("社員番号", "氏名", "フリガナ", "所属", "住所", "電話番号") 'タイトルデータ SetWide = Array(10, 15, 15, 15, 15, 15) '列幅データ SetColor = Array(35, 20, 33, 35, 20, 35) '背景色データ With Range(SetCell) 'このセル位置が基準となる。 For I = 0 To UBound(SetTitle) .Offset(0, I) = SetTitle(I) 'タイトル設定 .Offset(0, I).EntireColumn.ColumnWidth = SetWide(I) '列幅設定 .Offset(0, I).Interior.ColorIndex = SetColor(I) '背景色設定 Next I End With Hani = Range(SetCell).CurrentRegion.Address(False, False) '指定セルから始まる表の範囲を取得 Range(Hani).Borders.LineStyle = xlContinuous '格子罫線を作成:細実線 End Sub ' |
(画面クリックして拡大)
EXCEL VBA 表の行タイトル(見出し)を配列にて設定(指定位置に作成)
下記のサンプルプログラムは、前回のサンプル①と同じEXCELの表のタイトルを配列にて設定するサンプルプログラムです。今回のプログラムは、行タイトル(見出し)を作成します。今回も配列設定にて作成するために、修正・追加・削除が簡易変更が可能となります。
【基本設定】
●タイトルの設置位置(セル:C5)基準位置
●タイトル:上側より・フォルダー名、更新日時、アクセス日時、フォルダー容量)を配列データ(SetTitle)として登録
●縦幅:上側より・20、25、30、35、サイズデータを配列データ(Setheight)として登録
●背景色:上側より・19、20、35、33の背景色データを配列データ(SetColor)として登録
※上記の条件にて、セルC5を基準に表の行タイトルが表示されました。
【プログラムの流れ】
① シート全体をクリアーします。
② 基準となるセル位置の指定(セル:C5)※この位置を基準に行タイトル(見出し)が作成
③ タイトルデータ・行幅データ・背景色データを配列データとして順番に登録します。
④ 基準となるセル位置を元に、列幅を設定します。(基準がC5なのでC列の幅を設定します。)
⑤ 登録された配列データ分の件数を繰り返します。
⑥ 基準となるセル位置を元に、タイトル名・行幅・背景色を設定・表示します。
⑦ 配列データが無くなるまで繰り返します⑤へ
⑧ 表範囲に格子罫線を作成する。
【プログラムの注意事項】
・配列データを追加・削除する場合は、タイトルデータ・行幅データ・背景色データともに同数に合わせます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
' ' Sub Title_Set02() '行のタイトル(見出し)を配列設定 Dim SetTitle, Setheight, SetColor As Variant Dim SetCell, Hani As String Dim I As Long Cells.Clear SetCell = "C5" '基準となるセル位置の指定 SetTitle = Array("フォルダー名", "更新日時", "アクセス日時", "フォルダー容量") 'タイトルデータ Setheight = Array(20, 25, 30, 35) '行幅データ SetColor = Array(19, 20, 35, 33) '背景色データ With Range(SetCell) .EntireRow.RowHeight = 10 '列幅設定 For I = 0 To UBound(SetTitle) .Offset(I, 0) = SetTitle(I) 'タイトル設定 .Offset(I, 0).EntireRow.RowHeight = Setheight(I) '行幅設定 .Offset(I, 0).Interior.ColorIndex = SetColor(I) '背景色設定 Next I End With Hani = Range(SetCell).CurrentRegion.Address(False, False) '指定セルから始まる表の範囲を取得 Range(Hani).Borders.LineStyle = xlContinuous '格子罫線を作成:細実線 End Sub ' |
(画面クリックして拡大)
EXCEL VBA 表の行・列タイトル(見出し)を配列にて設定(指定位置に作成)
下記のサンプルプログラムは、前回のサンプル①・②と同様に、行タイトル・列タイトルを配列にて設定するサンプルプログラムです。位置や行タイトル・列タイトルが変更・削除・追加があっても簡単に修正する事が出来ます。
【基本設定】
●タイトルの設置位置(セル:B2)基準位置
【列タイトル】
●タイトル:左側より支店名, 4月, 5月, 6月, 7月, 8月, 9月, 上期, 10月, 11月, 12月, 1月, 2月, 3月, 下期, 年計を配列データ(SetTitle)として登録
●列幅:左より15, 6, 6, 6, 6, 6, 6, 10, 6, 6, 6, 6, 6, 6, 10, 10のサイズデータを配列データ(SetWide)として登録
●背景色:左より33, 20, 20, 20, 20, 20, 20, 35, 20, 20, 20, 20, 20, 20, 35, 33の背景色データを配列データ(SetColor)として登録
【行タイトル】
●タイトル:上側より東京支店, 横浜支店, 千葉支店, 大宮支店, 草津支店, 合計を配列データ(SetTitle)として登録
●縦幅:上側より20, 20, 20, 20, 20, 20サイズデータを配列データ(Setheight)として登録
●背景色:上側より19, 20, 19, 20, 19, 33の背景色データを配列データ(SetColor)として登録
※上記の条件にて、セルB2を基準に表の行・列タイトルが表示されました。
【プログラムの流れ】
① シート全体をクリアーします。
② 基準となるセル位置を設定の指定(セル:B2)※この位置を基準に行・列タイトル(見出し)が作成
③ 列のタイトルデータ・行幅データ・背景色データを配列データとして順番に登録します。
④ 行のタイトルデータ・行幅データ・背景色データを配列データとして順番に登録します。
⑤ 登録された配列(列)データ分の件数を繰り返します。
⑥ 基準となるセル位置を元に、タイトル名・列幅・背景色を設定・表示します。
⑦ 配列(列)データが無くなるまで繰り返します⑤へ
⑧ 登録された配列(行)データ分の件数を繰り返します。
⑨ 基準となるセル位置を元に、タイトル名・行幅・背景色を設定・表示します。
⑩ 配列(行)データが無くなるまで繰り返します⑧へ
⑪ 表範囲に格子罫線を作成する。
【プログラムの注意事項】
・配列データを追加・削除する場合は、タイトルデータ・行幅データ・背景色データともに同数に調整します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
' ' Sub Title_Set03() '行・列のタイトル を配列設定 Dim SetTitle_W, SetWide, SetColor_W As Variant Dim SetTitle_H, Setheight, SetColor_H As Variant Dim I As Long Dim SetCell, Hani As String Cells.Clear 'シートを削除 SetCell = "B2" '基準となるセル位置の指定 '列タイトルのデータ SetTitle_W = Array("支店名", "4月", "5月", "6月", "7月", "8月", "9月", "上期", "10月", "11月", "12月", "1月", "2月", "3月", "下期", "年計") SetWide = Array(15, 6, 6, 6, 6, 6, 6, 10, 6, 6, 6, 6, 6, 6, 10, 10) SetColor_W = Array(33, 20, 20, 20, 20, 20, 20, 35, 20, 20, 20, 20, 20, 20, 35, 33) '行タイトルのデータ SetTitle_H = Array("東京支店", "横浜支店", "千葉支店", "大宮支店", "草津支店", "合計") Setheight = Array(20, 20, 20, 20, 20, 20) SetColor_H = Array(19, 20, 19, 20, 19, 33) With Range(SetCell) For I = 0 To UBound(SetTitle_W) .Offset(0, I) = SetTitle_W(I) 'タイトル設定 .Offset(0, I).EntireColumn.ColumnWidth = SetWide(I) '列幅設定 .Offset(0, I).Interior.ColorIndex = SetColor_W(I) '背景色設定 Next I For I = 0 To UBound(SetTitle_H) .Offset(I + 1, 0) = SetTitle_H(I) 'タイトル設定 .Offset(I + 1, 0).EntireRow.RowHeight = Setheight(I) '列幅設定 .Offset(I + 1, 0).Interior.ColorIndex = SetColor_H(I) '背景色設定 Next I End With Hani = Range(SetCell).CurrentRegion.Address(False, False) '指定セルから始まる表の範囲を取得 Range(Hani).Borders.LineStyle = xlContinuous '格子罫線を作成:細実線 End Sub ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。