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)

・作成するシート ・標準モジュールのVBAコード ・VBAコードの解説 ・ビープ音を変更したい場合 ・時刻になったら音を鳴らして知らせる最後に
指定文字、指定数式でジャンプ機能(Union)
・ジャンプのセル選択以外でセルを選択するには ・指定文字、指定数式でジャンプ機能のVBA ・指定文字、指定数式でジャンプ機能の解説 ・指定文字、指定数式でジャンプ機能の最後に
「値の貼り付け」をショートカットに登録(OnKey)
コピーペーストの質問で、よく目にするのは、値の貼り付けが面倒だというものです。どうも、ショートカットが無いからのようです。ネットを調べて見たのですが、どれもしっくりこないので、作ってみました。いろいろな方法が考えられるのですが、簡単かつ直ぐに使えて、他の人にも配布可能なものが良いと思います。
「セルの結合」をショートカットに登録(OnKey)
半角カナのみ全角カナに変換する
半角カナのみ全角カナに変換します。ネットを探してみたところ、あるにはあるのですが、どうも中途半端。直ぐに使えて、汎用性のあるプログラムが見つからなかったので、作ってみました。ではプログラムです。PrivateSub半角カナto全角カナ(ByRefobjRangeAsRange)DimstrInAs String'元…
計算式の元となる数値定数を消去する(Precedents)
指定のセルの計算式が参照しているセルの数値定数をクリアします。ただし、参照しているセルが、さらに他のセルを参照している場合は、その先のセルを消去します。つまり、計算式の入っているセルを起点にして、その参照先をすべて検索し、計算式の元となるセル(数値定数が入っているセル)の値をクリアします。
Beep音で音楽(Beep,Sleep)
時々検索されるので、Beep音で音楽を演奏してみましょう。プログラムはほぼAPIをCALLするだけです。まずは、シートです。こんな感じです。ドレミの周波数は結構適当なので、詳しい方は自分で調整して下さい。
日付の検索(配列の使用)
日付の検索は、いろいろと面倒です。Findメソッドで検索する場合、表示書式に左右されますので、表示書式を変更しただけで、検索されなくなります。これは、手作業での検索においても同様になりますが、マクロとしてはいかにも不便です。
ストップウォッチ(1/100秒)(Timer)
・ストップウォッチVBAコード ・ストップウォッチVBA解説 ・ストップウォッチ機能強化版
ストップウォッチ改(1/100秒)(Timer)
・公開済みの初期のストップウォッチ ・追加する機能 ・シートレイアウト ・VBAコード ・ダウンロード
重複の無いユニークなデータ作成
簡単な例で シート「元データ」A列に、1行目に見出し、2行目以降にデータが入っている シート「ユニーク」このA列に、シート「元データ」のA列をユニーク(一意)にして取り出します。まずは、エクセルらしく、ワークシート関数とフィルターを使って 非常にエクセルらしい、素直な処理です。


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

エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作




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


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


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