「今さら」なんてない

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

Excel VBA インデント上げ下げ

今回は連日投稿中のタスク管理ツール以外でもすぐに使える簡単なものです。

また、Call文(他のプロシージャを呼び出す)に値渡しを使ってコードの集約ができる簡単な例としてもご参考にしていただければと思います。

ちなみにこちらの記事で紹介したExcelタスク管理ツールの補助機能としてももちろんご利用いただけます。
はじめての方はまずはこちらの記事をどうぞ。 yoshino-ya.hatenablog.com



それでは本題です。

概要

  1. インデント上げ下げ(そのままやん)

  2. C,J列以外は通常のTab動作(セル移動)にする
    この仕分けが不要な方はSub インデント(上げ下げ As Integer)内のIfEndに関してSelection.InsertIndent 上げ下げだけ残して他はまるごと削除して下さい

やること

  1. 標準モジュールへコードをコピペする
    Alt+F11でVBEを開く
    挿入→標準モジュールを押す

  2. ショートカット割当

ショートカット割当方法はこちらをどうぞ

yoshino-ya.hatenablog.com

ショートカットの割当例

キー1 キー2 キー3 動作
{TAB} インデント下げ
Shift {TAB} インデント上げ

コード

Option Explicit

Sub インデント下げ()
    Call インデント(1)
End Sub

Sub インデント上げ()
    Call インデント(-1)
End Sub

Sub インデント(上げ下げ As Integer)
    On Error Resume Next
    
    With ActiveCell
        If .Column <> 3 And .Column <> 10 Then
            'C,J列以外は通常のTab動作(セル移動)にする
                .Offset(0, 上げ下げ).Select
        Else
            Selection.InsertIndent 上げ下げ
        End If
    End With
End Sub

以上です。

冒頭で、「ご参考に」などと偉そうに申し上げましたが、人に渡す工程を踏むことで僕自身のスキルアップになった良い例だなーと思います。この仕組みは他でも大いに使えそうです。