エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか?
Mergeメソッドを書き加えれば、自動的にセルの複数一括結合・解除を自動的に行ってくれるので、並べ替え時のエラーを回避できる方法をご紹介します。
Mergeメソッド
VBAでセルの結合・解除は、Mergeメソッドを使いますが、エラーを防ぐ為に結合・解除するセルの範囲の左上端の入力値がセルを指定します。
その為にその他のセル入力値は削除されるので注意してください。
Mergeメソッドでセル結合
まず、Mergeメソッドの基本的な使い方の例として、セルA1とセルB1の隣同士を結合するVBAコードをご紹介します。
ここではユーザーフォームに配置したコマンドボタンに記載している例です。
Private Sub CommandButton1_Click()
Range(“A1:B1”).Merge
End Sub
- コマンドボタン1がクリックされたら
- セルA1とB1を結合する
- マクロ記録終了
このようにとても簡単で、ここではRangeを使いましたが、繰り返し処理の変数を使う時はCellsを使うので下記のようになります。
Private Sub CommandButton1_Click()
Range(Cells(1, 1), Cells(1, 2)).Merge
End Sub
今回の例は隣同士のセルを結合するVBAコードですが、もちろんA1:C1とすれば横3列を結合、A1:B2とすれば縦横4つのセルが結合できます。
UnMergeメソッドでセル解除
結合の次はセルの結合解除も重要ですが、とても簡単な事で結合時に使った「Merge」を解除の「UnMerge」に変えるだけでセルを解除できます。
Private Sub CommandButton1_Click()
Range(“A1:B1”).UnMerge
End Sub
このように簡単にVBAコードを書くことができます。
行単位で複数のセル結合・解除
1か所のセルの結合・解除を行うのならばVBAを使わないと思いますが、複数の行をまとめて一括処理で結合・解除を行わなくてはいけないのでVBAを使うと思います。
ここでは、Mergeメソッドの引数AcrossをTrueに設定することで、選択範囲のセルを行単位で結合することができるようになります。
例としてRangeを使ってセル範囲A1:B10を行単位で結合するVBAコードをご紹介します。
Private Sub CommandButton1_Click()
Range(“A1:B10”).Merge True
End Sub
- コマンドボタン1がクリックされたら
- セルA1~B1の範囲を行単位で結合する
- マクロ記録終了
これでA1とB1が結合A2とB2が結合・・・A10とB10が結合と行単位結合の完成です。
ちなみに行単位で結合したセルを結合解除する方法は、基本的なセル結合解除と一緒です。
セル結合のある表の並べ替え
セルの結合・解除を行いながらエクセルで作った表の並べ替えをVBAを使って実行する方法をご紹介します。
ここでは下の図のようにセルB2~C10を行単位で結合して点数を見やすくするVBAコードで、同時に点数の多い順に並べ替えも同時に行います。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range(“B2:C10”).UnMerge
Range(“A2:D10”).Sort KEY1:=Range(“B1”), ORDER1:=xlDescending
Range(“B2:C10”).Merge True
ActiveSheet.Protect
Application.ScreenUpdating = True
End Sub
- コマンドボタン1がクリックされたら
- 画面の移動を停止(ちらつき防止)
- シートの保護を解除
- セル範囲B2~C10のセル結合解除する
- セル範囲A2~D10を並べ替える(最優先セルB列・大きい順)
- セル範囲B2~C10を行単位でセル結合する
- シートの保護
- 画面移動停止解除
- マクロ記述終了
ここでは、実際に使っているように画面のちらつきを防ぐVBAコードと、シートの保護・解除も付け加えています。
並べ替えエラーを防ぐためにこのような順でVBAコード記述すれば、エラーが出なくなります。
順番を間違えるとエラーになりますよ!
関連記事
-
ラベル
VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
ラベル(Label)にVBAコードを記述する ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを記述… -
データの操作
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
テキストボックス
複数のテキストボックスの値を一括で複数のセルの値に書き換える方法
セルA1~A10の値をまとめてテキストボックス1~10に転記する ボウリング場のリーグ戦の成績表でも使っているエクセルで、リーグ戦のルールなどを設定するユーザーフォ… -
セルの操作
エクセルVBAで複数セルを一括で結合・解除を繰り返し処理する方法
エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか? Mergeメソッドを書き加えれば、自動的にセル… -
データの操作
エクセルVBAで指定範囲内のセルの値「0」を全て空欄に置き換える方法
エクセルで表を扱う時に数式エラーを防ぐ為に、空欄の代わりにIFERROR関数などで数字の「0」で代用していることありませんか? この代用している値を一瞬で空欄にできる… -
データの操作
エクセルVBAでシートの移動と同時に表のデータの並べ替えをする
成績表やデータ表などに付き物の並べ替え作業って地味に面倒だと思ったことありませんか? 優先順位をつけて並べ替える時に、同時にエクセルシートも切替出来たら作業が… -
データの操作
エクセルVBAで不要な行や列を非表示ができない時の対処方法と順番確認
データ抽出などで不要な行や列を自動的に非表示にできるExvel-VBAのHiddenプロパティですが、コードは正しく書かれているのにコマンドボタンを押すとエラーになったこと… -
データの操作
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ… -
セルの操作
エクセルVBAで指定した範囲の複数セルの値を一括クリアする方法
入力済みセルの値を消去することがあり、1個1個手作業で空白にするのが面倒だと思ったことはありませんか? Excel-VBAのコマンドボタンを押すことにより、指定した複数…
紅葉スポット
-
那須岳・那須ロープウェイへ那須塩原駅や黒磯駅からバスで行く
天皇皇后両陛下や皇族の方々のご静養の場所があるほど、自然豊かな那須高原のシンボルでもある那須岳は、夏は過ごしやすい避暑地として、秋には色とりどりの木々の紅葉… -
フリーきっぷで行く日光や栃木県内の紅葉名所や穴場スポット22選
関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でもいろは坂は大渋滞なのに休日ともなると日光駅周辺から渋滞して全く動かない状態に… -
ムーミンをイメージしたトーベ・ヤンソンあけぼの子どもの森公園の紅葉
入間市と飯能市の境界にある自然公園で、ムーミンの世界をイメージして作られてライトアップも盛んに行われて、幻想的な世界を体験することができます。 また、秋の紅葉… -
中禅寺湖湖畔の紅葉散策へ奥日光の大定番紅葉観光スポットへ
中禅寺湖観光の中禅寺温泉バスターミナルから華厳の滝や中禅寺湖畔散策へ紅葉を楽しみに訪れる方も多く、紅葉見頃になるといろは坂からの大渋滞に巻き込まれ1時間以上、… -
乗り鉄必見の紅葉列車でわたらせ渓谷鉄道車窓の紅葉景色へ
【紅葉見頃】11月上旬~11月下旬 旧国鉄・足尾線を引き継いだわたらせ渓谷鉄道は、渡良瀬川沿いを走るローカル線で渓谷沿いの紅葉がとても綺麗に見ることができるので… -
埼玉県指定名勝地の中津峡へ奥秩父を代表する紅葉スポット
秩父エリアトップクラスの絶景と言われている奥秩父の中津峡は、約10㎞もの中津川沿いの紅葉が見られて、その長さは約10㎞と言われて、西武秩父駅からのバス車窓からも…