「今さら」なんてない

「自分にもできそう」を伝播させるブログ

【Excel VBA】Excelテキストエディター化パック【標準装備されろ】

議事録をとる時、ツール何使ってますか?

これまで僕はMS Wordでアウトライン表示で、というのが多かったのですが、
Workflowyと比較して見づらいし書きづらいので何か引っかかるものがありました。

ならExcelでよくね?

いろいろいじれるし

ということで作りました。

なぜExcel

Excelは本来表計算ソフトなのでエディター以前に計算が本業です。

本来備わっている強みを他のツールで出そうと思うと超苦労するのでここをベースに作るのが良さげだと思ったからです。

タイムスタンプ押すのがラク

咄嗟の計算機としても使える

時間や予定、金額、物理量など、何かしら会議の場で突然振られることないですか?

いちいち計算機を持ってる人もなかなか居ないでしょうし、
スマホの計算機では難しいものも多々あると思います。

Excelなら関数がいくらでも詰まってるのでその場でパパっとクールに計算してくれます。

特に予定調整なんて会議でその場で決めないと、どんどん先送りになってしまいますよね

やること

個人用マクロブックを作成する

アドインでやってもよいのですが、
最近知った「個人用マクロブック」というものを導入したところ、
絶対こっちの方がいろいろラクなのでこっちにしました。

作成方法はこちら(すみません、既存のいい記事があるのでここはサボります) allabout.co.jp

標準モジュールにコードをコピペする

前置きが長くなりました。 とりあえず標準モジュールにこれをコピペしてください。

Option Explicit

Public Enum Color
  Black = 1
  white
  Red
  Green
  Blue
  Yellow
  Pink
  NONE = -4142
End Enum

Sub FontColor()
  Dim Target
  Set Target = Selection.Font
  Call ColorToggle(Target, False)
End Sub

Sub InteriorColor()
  Dim Target
  Set Target = Selection.Interior
  Call ColorToggle(Target, True)
End Sub

Sub ColorToggle(Target, Add_Clear As Boolean)
  With Target
    Select Case Target.ColorIndex
      Case Is = Color.Black
        If Add_Clear = True Then
          .ColorIndex = Color.NONE
        Else
          .ColorIndex = Color.Red
        End If
      Case Is = Color.white: .ColorIndex = Color.Black
      Case Is = Color.Yellow: .ColorIndex = Color.white
      Case Is = Color.Blue: .ColorIndex = Color.Yellow
      Case Is = Color.Red: .ColorIndex = Color.Blue
      Case Else: .ColorIndex = Color.Red
    End Select
  End With
End Sub

Sub HorizontalToggle()
  With Selection
    Select Case .HorizontalAlignment
      Case Is = xlLeft: .HorizontalAlignment = xlRight
      Case Is = xlCenter: .HorizontalAlignment = xlLeft
      Case Else: .HorizontalAlignment = xlCenter
    End Select
  End With
End Sub

Sub VerticalToggle()
  With Selection
    Select Case .VerticalAlignment
      Case Is = xlTop: .VerticalAlignment = xlBottom
      Case Is = xlCenter: .VerticalAlignment = xlTop
      Case Else: .VerticalAlignment = xlCenter
    End Select
  End With
End Sub

Sub Merge_()
  Selection.Merge
End Sub
Sub UnMerge_()
  Selection.UnMerge
End Sub

Sub FontSizeUp()
  Dim r As Range
  For Each r In Selection
    r.Font.Size = r.Font.Size + 1
  Next r
End Sub

Sub FontSizeDown()
  Dim r As Range
  For Each r In Selection
    If r.Font.Size > 1 Then: r.Font.Size = r.Font.Size - 1
  Next r
End Sub

Sub IndentR()
  Call インデント(1)
End Sub

Sub IndentL()
  Call インデント(-1)
End Sub

Sub インデント(上げ下げ As Integer)
  On Error Resume Next
  Selection.InsertIndent 上げ下げ
End Sub

Sub AddRow()
  Dim Rs As Long

  Application.CutCopyMode = False

  Rs = ActiveCell.Row
  Rows(Rs + 1).Insert Shift:=xlDown
End Sub

Sub DeleteRow()
  Dim rc As Integer
  If WorksheetFunction.CountA(ActiveCell.EntireRow) <> 0 Then
      rc = MsgBox("この行にはデータが存在します。この行を削除しますか?", vbYesNo + vbQuestion, "確認")
  Else: rc = vbYes
  End If
  If rc = vbYes Then
      'MsgBox "削除します"
      Rows(Rs).Delete
  End If
End Sub

ThisWorkbookモジュールにコードをコピペする

次はThisWorkbookモジュールを開いてコピペしてください。

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.OnKey "^e"
  Application.OnKey "^+e"
  Application.OnKey "^m"
  Application.OnKey "^+m"
  Application.OnKey "^+>"
  Application.OnKey "^+<"
  Application.OnKey "^+f"
  Application.OnKey "^+l"
  Application.OnKey "^{TAB}"
  Application.OnKey "^+{TAB}"
  Application.OnKey "^~"
  Application.OnKey "^+~"
End Sub
Private Sub Workbook_Open()
  Application.OnKey "^e", "HorizontalToggle"
  Application.OnKey "^+e", "VerticalToggle"
  Application.OnKey "^m", "Merge_"
  Application.OnKey "^+m", "UnMerge_"
  Application.OnKey "^+>", "FontSizeUp"
  Application.OnKey "^+<", "FontSizeDown"
  Application.OnKey "^+f", "FontColor"
  Application.OnKey "^+l", "InteriorColor"
  Application.OnKey "^{TAB}", "IndentR"
  Application.OnKey "^+{TAB}", "IndentL"
  Application.OnKey "^~", "DeleteRow"
  Application.OnKey "^+~", "AddRow"
End Sub

機能ごとの説明

色のトグル切り替え(文字色・背景色)

赤→青→黄→白→黒→(色なし)

の順に色を変更していきます。

(色なし)は背景色のみです。

色を追加・変更したい方は

Public Enum Color
  Black = 1
  white
  Red
  Green
  Blue
  Yellow
  Pink
  NONE = -4142
End Enum

の部分に色を追加して

Case Is = Color.white: .ColorIndex = Color.Black

とかのColor.●●●に入れてください。

好きな色を振るには、 Excelシート上で色を変えてからVBEで読み込みます。

背景色ならイミディエイトウィンドウに
?Activecell.Interior.ColorIndex
と打てばインデックス番号が出てきます。

それを NONE = -4142 の後に入れてください。
Pinkまでの間に入れると列挙体がずれます。

文字位置のトグル切り替え(水平・上下)

  • 中央寄せ→右寄せ→左寄せ
  • 上寄せ→下寄せ→中央寄せ

の順に変更します。

結合・結合解除

これはそのままです。

フォントサイズ調整

これもそのままです。

  • Ctrl+Shift+>で大きく、
  • Ctrl+Shift+<で小さく

というWindows標準ショートカットを持ってきただけですが これが地味に良いんです。

インデント上げ下げ

これのおかげで階層構造がラクラク作成できます。
「今何の話だっけ」とか
後からまとめにかかる時に区切りができてラクです。

ショートカットにCtrlを入れたのは、通常のExcel操作でセル移動にTABキーを使うのを殺さないためです。
左手だけだと手がつりそうになるのでCtrlShiftは右手で押してあげてください。

行の削除・追加

これもそのままです。

ただし削除は誤爆防止に意思確認させてます。

 If WorksheetFunction.CountA(Cells(Rs, 1), Cells(Rs, ”E")) <> 0 Then
      rc = MsgBox("この行にはデータが存在します。この行を削除しますか?", vbYesNo + vbQuestion, "確認")

この状態だとA-E列の中に空白でないセルがあれば通知します。

Cells(Rs, ”E")Eが列番号なのでテキトーにいじってください
(本来もっときちんと作るものですがエディタ用途ならこれくらいの列数でいいでしょ)

ショートカットキー割当表

こんな感じにしてます。 変更したい方は ThisWorkbookモジュールのコードをいじってください。

ショートカット 動作
Ctrl + E 水平位置
Ctrl+Shift+E 上下位置
Ctrl+M 結合
Ctrl+Shift+M 結合解除
Ctrl+Shift+> 文字大きく
Ctrl+Shift+< 文字小さく
Ctrl+Shift+F 文字色
Ctrl+Shift+L 背景色
Ctrl+{TAB} インデント下げ
Ctrl+Shift+{TAB} インデント上げ
Ctrl+{Enter} 行の削除
Ctrl+Shift+{Enter} 行の追加

いかがでしょうか? ほぼほぼWindows標準ショートカットを模倣しただけですが、
自然と出てくる頻出機能ばかりなので
業務効率化やストレス削減にお役立ていただけると嬉しいです。