VBAサンプル集
「セルの結合」をショートカットに登録(OnKey)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2013年5月以前 最終更新日:2013-05-15

「セルの結合」をショートカットに登録(OnKey)


「値の貼り付け」をショートカットに登録 が好評だったので(本当かな)、
コピーペーストの質問で、よく目にするのは、値の貼り付けが面倒だというものです。どうも、ショートカットが無いからのようです。ネットを調べて見たのですが、どれもしっくりこないので、作ってみました。いろいろな方法が考えられるのですが、簡単かつ直ぐに使えて、他の人にも配布可能なものが良いと思います。

その第二弾! セルの結合をショートカットに登録します。

作り方は、前回の、「値の貼り付け」をショートカットに登録 と同様です。
コピーペーストの質問で、よく目にするのは、値の貼り付けが面倒だというものです。どうも、ショートカットが無いからのようです。ネットを調べて見たのですが、どれもしっくりこないので、作ってみました。いろいろな方法が考えられるのですが、簡単かつ直ぐに使えて、他の人にも配布可能なものが良いと思います。

コードのみ紹介します。

VBEで、ブックモジュールに

Private Sub Workbook_Open()
  Application.OnKey "^m", "CellMerge"
  Application.OnKey "^M", "CellMerge2"

End Sub


"^m"は、Ctrl+M


"^M"は、Ctrl+Shift+M

がショートカットになります。

Ctrl+Mが、通常のセル結合(中央寄せ等の書式が設定されます。)

Ctrl+Shift+Mが、書式が設定をしないセルの結合です。

次に、標準モジュールに



Sub CellMerge()
  Dim myRange As Range
  Dim blnMerge
  On Error Resume Next
  blnMerge = False
  For Each myRange In Selection
    If myRange.MergeCells = True Then
      blnMerge = True

      Exit For
    End If
  Next
  If blnMerge = True Then
    With Selection
      .HorizontalAlignment = xlGeneral
      .VerticalAlignment = xlCenter
      .WrapText = False
      .Orientation = 0
      .AddIndent = False
      .IndentLevel = 0
      .ShrinkToFit = False
      .ReadingOrder = xlContext
      .MergeCells = True
      .UnMerge
    End With
  Else
    With Selection
      .HorizontalAlignment = xlCenter
      .VerticalAlignment = xlCenter
      .WrapText = False
      .Orientation = 0
      .AddIndent = False
      .IndentLevel = 0
      .ShrinkToFit = False
      .ReadingOrder = xlContext
      .MergeCells = False
      .Merge
    End With
  End If
End Sub
Sub CellMerge2()
   Dim myRange As Range
  Dim blnMerge
  On Error Resume Next
  blnMerge = False
  For Each myRange In Selection
    If myRange.MergeCells = True Then
      blnMerge = True
      Exit For
    End If
  Next
  If blnMerge = True Then
    Selection.UnMerge
  Else
    Selection.Merge
  End If
End Sub


CellMerge


は、マクロの記録をそのまま使用しています。

不要な記述が多いのですが、通常操作と同じにする為に、そのままにしています。

CellMerge2

は、セルの結合のみを実行しています。

強制的に、中央寄せを解除したければ、

Selection.HorizontalAlignment = xlGeneral
をいれれば良いでしょう。

For Each myRange In Selection
  If myRange.MergeCells = True Then
    blnMerge = True
  End If
Next
この部分で、選択範囲に、結合セルが含まれるかの判定をしています。

結合セルが含まれている場合は、セル結合の解除、

結合セルが含まれていない場合は、セル結合しています。

あとは、「値の貼り付け」をショートカットに登録 と同様に、
コピーペーストの質問で、よく目にするのは、値の貼り付けが面倒だというものです。どうも、ショートカットが無いからのようです。ネットを調べて見たのですが、どれもしっくりこないので、作ってみました。いろいろな方法が考えられるのですが、簡単かつ直ぐに使えて、他の人にも配布可能なものが良いと思います。

アドインで保存し、そのアドインを有効にして下さい。

これで、

Ctrl+Mで、通常のセル結合。

Ctrl+Shift+Mで、中央寄せにしないセル結合

の出来上がりです。




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

時刻になったら音を鳴らして知らせる(OnTime)
指定文字、指定数式でジャンプ機能(Union)
「値の貼り付け」をショートカットに登録(OnKey)
「セルの結合」をショートカットに登録(OnKey)
半角カナのみ全角カナに変換する
計算式の元となる数値定数を消去する(Precedents)
Beep音で音楽(Beep,Sleep)
日付の検索(配列の使用)
ストップウォッチ(1/100秒)(Timer)
ストップウォッチ改(1/100秒)(Timer)
重複の無いユニークなデータ作成


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

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



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