和風スパゲティのレシピ

日本語でコーディングするExcelVBA

列見出しをアルファベット⇔数字で切り替える

列の見出し表示「ABC…」を、「123…」に切り替えるマクロを紹介します。

↓こういう仕様のマクロです。


ABC表示

⇅ 実行するたびに切り替わる

123表示


Cells(R, ○)
この○に入る数字を指折り数えなくて済むためのスイッチですね。


実行型の便利マクロですので、
Excel起動時に裏で開かれる「個人用マクロブック」などに搭載して使ってください。

切り替え系のマクロは何回も押しますので、ショートカットキーに登録したり、ツールバーやリボンにボタン配置すると便利です。

はじめに:Cellsはアルファベットでも動きます

今回のマクロは、「AE列って何番目?」を調べるためのマクロですが、
これ、実は調べなくても、

Cells(1, "AE") ' ← AE1セルを取得
Columns("AE") ' ← AE列を取得

と、普通にアルファベットを渡してもCells・Columnsプロパティは動かせます。


もちろん数字がほしい場面は多いので今回のマクロも便利なのですが、
アルファベットのままの方が見やすいという場面も当然あります。

この書き方ができる事をちゃんと知っておき、
その上で「数字で書いた方がいい場面」で、今回のマクロは使ってください。


では始めます。

ソースコード

Sub 列見出し表示をABC⇔123で切り替える()
    If Application.ReferenceStyle = xlA1 Then
        Application.ReferenceStyle = xlR1C1
    Else
        Application.ReferenceStyle = xlA1
    End If
End Sub

コードの解説

ものすごく短いコードですね。

Application.ReferenceStyleを「xlA1」「xlR1C1」でスイッチしているだけです。


Application.ReferenceStyle とは参照形式を変更するオプションで、

数式の参照形式

↑これのことです。


これにチェックを入れると、セルの参照形式がいつものA1形式からR1C1形式に変わり、例えばA列に入れた↓の数式が、

A1 =SUM(A2:A10)

R1C1 =SUM(R[1]C:R[9]C)

こう変わったりするのですが、
ぶっちゃけR1C1形式はどうでもいいので解説は割愛します。


大事なのは「参照形式をR1C1にしている間は列の見出し表示が123になること」ですからね。
123表示


R1C1形式の数式は見づらいだけなので、マクロを書き終わったらさっさといつものA1形式に戻してください。

R1C1形式とは何ぞやを知る必要は(今回は)ありません。


今回のマクロは、リボンとかクイックアクセスツールバーにボタンを置いておき、

  • マクロを書いているときは表示を123に切り替えてコーディング
  • シートをいじるときは表示をABCに戻す

ような感じで使ってください。




余談ですが、このマクロのSubプロシージャ名を

Sub 列見出し表示をABC⇔123で切り替える()

としていることは結構大事なポイントです。


ストレートに処理内容で命名すると、

Sub 参照形式をR1C1⇔A1で切り替える()

と書いてしまいそうになりますが、これはあくまで「手段」の話です。


コードを読む際は「何をやっているコードなのか」を読み解くことが重要になるため、
関数・変数・コメントには、手段ではなく「目的」を書くようにしましょう。

手段はコードを見ればわかりますが、目的はコードを読み解かないとわかりませんからね。


今回のA1⇔R1C1切り替えなんて、まさに「初見だと手段はわかっても目的がわからないコード」の代表例です。


後で読み返したときに

「これなんで数式の表示変えてるんだろ?」

とならないように、何がしたかったのかを記しておきましょう。