VBAサンプル集
セル結合なんて絶対に許さないんだからね

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2020-02-17 最終更新日:2020-02-17

セル結合なんて絶対に許さないんだからね


セル結合の弊害はネットに溢れているのでここで改めて説明の必要はないでしょう。
とはいえ、ついついセル結合してしまう事ありますよね、人間だからね。


VBAで適切に処理すればセル結合もきちんと処理は可能です。

第85回.結合セルの扱い|VBA入門
・セル結合に関する、メソッド・プロパティ ・セル結合のマクロVBA使用例 ・セル結合時の値消去 ・指定セル範囲に結合セルが存在するか判定するマクロVBA ・セル結合時のOffsetとResizeの注意点

しかし、セル結合しちゃダメと言われたらやらないほうが良いですね。
でも、ダメと言われるとやりたくなっちゃうのが男の子・・・その気持ちはわかります・・・


でもダメー、絶対にセル結合を許さないVBAがここにあります。
このVBAを起動したら、結合すると間髪入れずにセル結合解除していきます。
これでもう、セル結合は絶対にできない。

VBA マクロ セル結合 SetTimer

※ほほ冗談アプリです。
実際に使う場合は全て自己責任でお願いします。

セル結合なんて絶対に許さないVBA

Option Explicit

Public Declare PtrSafe Function SetTimer Lib "USER32" _
                    (ByVal hwnd As Long, _
                    ByVal nIDEvent As Long, _
                    ByVal uElapse As Long, _
                    ByVal lpTimerFunc As LongPtr) As Long
Public Declare PtrSafe Function KillTimer Lib "USER32" _
                    (ByVal hwnd As Long, _
                    ByVal nIDEvent As Long) As Long

Public mTimerID As Long

Sub TimerStart()
  If mTimerID <> 0 Then
    MsgBox "起動済です。"
    Exit Sub
  End If
  mTimerID = SetTimer(0&, 1&, 100&, AddressOf TimerProc)
End Sub

Sub TimerProc()
  If mTimerID = 0 Then End '終了できない時の対策
  On Error Resume Next 'デバッグ出すとExcelが固まるので
  If IsNull(Cells.MergeCells) Then
    Cells.MergeCells = False
  End If
End Sub

Sub TimerStop()
  Call KillTimer(0&, mTimerID)
  mTimerID = 0
End Sub

TimerStartを起動してください。

アクティブシートを監視して、セル結合があると直ぐに解除します。
間隔は100msにしていますので、ほぼ瞬時に解除されてしまいます。

対象シートは常にアクティブシートです。
どのブック、どのシートとかは何も判定していません。
シートを切り替えても、その時々のアクティブシートが対象です。
とにかく無条件でアクティブシートのセル結合を解除します。

このマクロ実行中もセルへの入力は普通にできますし、他のマクロを実行することもできます。
しかし、たとえ他のマクロでセル結合したとしても、このマクロで直ちに解除されてしまいます。
マクロでアクティブシート以外のシートをセル結合した場合は解除されません。
また、100msの間隔があるので、その間にアクティブシートを切り替えればやはり解除されません。

停止方法

必ず、TimerStopを起動してください。
これで停止させずにExcelを閉じた場合、非表示状態のExcelがタスクに残る場合があります。
新たにエクセルを起動できなくなった等の現象になった場合は、タスクマネージャーを確認してください。

SetTimerについて

VBAでのタイマー処理(SetTimer,OnTime)
・Application.OnTime メソッド ・WindowsAPI:SetTimer関数 ・最後に

※※※ 注意 ※※※
APIのタイマー処理をしていますので、使い方を誤るとエクセルが固まったり消えてなくなったりします。

セル結合なんて絶対に許さないの最後に

先にも書きましたが、VBA自体はほぼ冗談アプリです。
あくまで、自分やってみて、こんなこともできるんだという程度のものとお考え下さい。
実務で使おうなどとは思わないほうがよろしいかと思います。

そもそもセル結合が全て悪ということではありません。
WEBで良く見かけるセル結合を批判しているもののほとんどは、
セル結合が適切に使われておらず、エクセルの作業の邪魔をしていたり、データ活用を阻害している場合に対してのものです。
セル結合も適切に使えばエクセルの便利な機能の一つなのです。



同じテーマ「マクロVBAサンプル集」の記事

数式の参照しているセルを取得する
増殖した条件付き書式を整理統合する
条件付き書式で変更された書式を取得する
セル結合/解除でセル値を退避/回復
セル結合なんて絶対に許さないんだからね
セルの数式をネスト色分けしてコメント表示
セル結合して表を見やすくする(非推奨)
シートを削除:不定数のシート名に対応
セル番地でバラバラに指定されたセルの削除
シート内に散在する複数表の縦結合
スピル範囲の自動色付け(強調表示)


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ