1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

100本のExcelマクロを作って気づいた、本当に使われるマクロの共通点

1
Posted at

100本のExcelマクロを作って気づいた、本当に使われるマクロの共通点

タグ: Excel VBA 業務効率化 Tips 初心者
投稿先: Qiita


派手な自動化より、地味な繰り返し作業の方が刺さる

100本のVBAマクロをサイトにまとめる中で、意外な発見がありました。「これは技術的に面白い」と思って作ったマクロより、「こんな単純な処理、マクロにするまでもないのでは」と思いながら作ったマクロの方が、結果的によく参照されているということです。

ここまで読んでいるということは、あなたも「便利ツールを作ったのに誰も使ってくれない」とか、逆に「なんでこんな地味な機能がこんなに助かるんだろう」と感じた経験があるはずです。この記事では、そうした「地味だけど頻出」なマクロを3つ、実際のコードとともに紹介します。

1. 検索と置換を「決まった作業」として固定する

Ctrl+Hの検索と置換は、Excelで最も使われる機能の一つですが、それゆえに「毎回同じ置換を手打ちしている」という無駄も起きがちです。FindAndReplaceは、この操作をマクロとして呼び出せるようにするだけの1手です。

Sub FindAndReplace()
    On Error GoTo ErrorHandler

    Dim ws As Worksheet
    Dim findStr As String
    Dim replaceStr As String

    Set ws = ActiveSheet

    findStr = InputBox("検索する文字列を入力してください", "検索文字列")
    If findStr = "" Then Exit Sub

    replaceStr = InputBox("置換後の文字列を入力してください", "置換文字列")

    ws.Cells.Replace What:=findStr, Replacement:=replaceStr, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False

    MsgBox "「" & findStr & "」を「" & replaceStr & "」に置換しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub

地味な処理ですが、「どのシートに何を実行したか分からなくなる」という手動操作にありがちな事故を防げる点が、実務での価値です。表記統一のような定型作業ほど、マクロ化の効果が積み重なります。

2. 条件付き書式を「数クリック」から「実行1回」に

条件付き書式は便利な機能ですが、ダイアログの設定手順が意外と多く、毎回同じ条件を設定し直すのは地味にストレスです。ApplyConditionalFormattingは、よく使うパターンをマクロとして固定してしまう方法です。

Sub ApplyConditionalFormatting()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cf As FormatCondition

    Set ws = ActiveSheet
    Set rng = ws.Range("A1:A100")

    On Error Resume Next
    rng.FormatConditions.Delete
    On Error GoTo 0

    Set cf = rng.FormatConditions.Add(xlCellValue, xlGreater, "100")

    With cf
        .Interior.Color = RGB(255, 255, 0) ' 黄色
        .StopIfTrue = False
    End With

    MsgBox "条件付き書式を適用しました。", vbInformation

    Set cf = Nothing
    Set rng = Nothing
    Set ws = Nothing
End Sub

期限超過を赤くする、目標達成を緑にするなど、「毎回同じ条件を設定している」作業に心当たりがあれば、それがマクロ化の候補です。目視でのチェック漏れを減らせるのも実務上のメリットです。

3. 連続データの入力を「オートフィル頼み」から卒業する

日付や連番、等差数列などの連続データ入力は、Excelのオートフィル機能で手軽にできますが、件数が多かったりテンプレートを都度作る場合は、ドラッグ操作自体が地味な手間になります。AutoFillSeriesは、開始値・ステップ・件数をダイアログで指定するだけで連続データを生成します。

Sub AutoFillSeries()
    On Error GoTo ErrorHandler

    Dim startCell As Range
    Dim countStr As String
    Dim fillCount As Long
    Dim fillRange As Range

    If TypeName(Selection) <> "Range" Then
        MsgBox "起点セルを選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set startCell = Selection.Cells(1, 1)

    countStr = InputBox("入力する件数を入力してください", "件数", "10")
    If countStr = "" Then Exit Sub
    If Not IsNumeric(countStr) Then
        MsgBox "数値を入力してください", vbCritical, "エラー"
        Exit Sub
    End If

    fillCount = CLng(countStr)

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub

テンプレート作成やテストデータの下ごしらえなど、「毎回ドラッグして数えながら作っている」作業があれば、そこがマクロの出番です。

まとめ: 「本当に使われる」の基準は派手さではなく頻度

3つに共通するのは、どれも技術的な難易度は高くなく、むしろ「よくやる操作をそのまま呼び出せるようにしただけ」だということです。100本作って分かったのは、便利さは処理の複雑さではなく、どれだけ頻繁に発生する作業を肩代わりできるかで決まるということでした。

ここで紹介したFindAndReplaceApplyConditionalFormattingAutoFillSeriesを含む、VBAマクロを100本、サイトにまとめて公開しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?