別のマクロを「call」で呼び出す。Excel VBA マクロ作成も仕事も小さい単位にして組み合わせる。

固定ページ
Pocket

Excel VBA・マクロ初心者の方は、小さい・簡単なマクロを作るだけで便利になります。

事務の仕事をしている方は日々Excelを使っているという方が多いのではないでしょうか?

私自身も毎日の事務でExcelを使っています。

Excelで同じことを繰り返す作業があれば、Excelが自動実行するようにマクロを作成すると便利です。

単純な繰り返しの作業・複雑な手順で間違えないように気を使う作業は、マクロでExcelが自動実行するようにすると、便利です。

マクロ初心者・VBA初心者の方は、自分にとって不便を解決する“小さくて簡単”なマクロを作ることから始めてみてはいかがでしょうか。

小さくて、簡単なマクロを紹介した記事は以下のものがあります。

最低限のVBA記述(Excel)だけでも役立つことはある。(例.ひな型ファイルとの組み合わせ)

Excel選択行を色付するマクロ(Activeline_Activehighlight)を削除するマクロ

Excelで開いているSheetの“いま選択しているセルのある行”を色付けして表示させて見やすくする。「ActiveLine_Highlight()」マクロの紹介

小さい・簡単なマクロがいくつかできたら、「call」で組み合わせて使うとさらに便利。

小さい・簡単なマクロを作った。いくつかのマクロをそのまま複数続けて実行したいなら、callを使えば簡単に出来ます。

Callは省略できますが、別のモジュールからプロシージャを呼び出す(「call」する)には、以下の2つが必要です。

  • モジュールがPrivateではなくPublicであること。
  • call プロシージャ名.モジュール名  で記述してあること。

(同一モジュール内ではプロシージャ名を記述するだけで呼び出せます。)

2つ以上のマクロを合わせて続けて実行したければ、

1つのVBAプロシージャに別のVBAプロシージャの内容をコピー&ペースト(追加)すればもちろん動きます。

しかし、例えば3つのマクロ VBAプロシージャに別のVBAプロシージャの内容を追加したら、もしある小さなマクロ VBAプロシージャを部分的にモジュール修正した時には、3つのVBAプロシージャ全部を書き換えなければなりません。

面倒ですし、ミスの元です。

修正は必要なモジュール1つにするべきでしょう。

そんなときには「call」を使ってみましょう。

「Module2」に「ActiveLine_highlight」

Module2

Public Sub ActiveLine_highlight()

Cells.Select

Selection.FormatConditions.Delete

Selection.FormatConditions.Add _
Type:=xlExpression, Formula1:= _
“=CELL(“”ROW””)=ROW()”

Selection.FormatConditions(1).Interior.ColorIndex = 35 ‘ColorIndex 好みの色を指定します。

Range(“A1”).Select ‘Range(“A1”)を選択するのは私の好み

With ActiveWorkbook.VBProject.VBComponents(“ThisWorkbook”)

.CodeModule.InsertLines (.CodeModule.CountOfLines + 1) _
, “Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)” _
& vbCrLf & _
“Application.ScreenUpdating = True” _
& vbCrLf & _
“End Sub”

End With

End Sub

‘———————————————————————————————————————–

Public Sub Del_ActiveLine_highlight()

Dim Cnt As Long

With ActiveWorkbook.VBProject.VBComponents(“ThisWorkbook”)
Cnt = .CodeModule.CountOfLines
.CodeModule.DeleteLines 1, Cnt

End With

Cells.Select

Selection.FormatConditions.Delete

Range(“A1”).Select ‘Range(“A1”)を選択するのは私の好み

End Sub

「Module3」に「囲み罫」(マクロ記録で作成するとこのように長い記述になります。今回はそのまま。)

Module3

Sub 囲み罫() ‘[ctrl]+[shift]+[End]キーで’アクティブセルから始まってデータが入力されている全てのセルを選択して囲み罫かける。

Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

Range(“A2”).Select

End Sub

「Module4」に「拡大125」

Module4

Sub 拡大125()

ActiveWindow.Zoom = 125

Application.ReferenceStyle = xlA1

End Sub

という3つの小さくて簡単なマクロが作ってあります。

この3つのマクロを順番に連続して実行したいという場合は以下のように
「call」で簡単に呼び出せます。


Sub Callの使い方()

Call Module2.ActiveLine_highlight

Call Module3.囲み罫

Call Module4.拡大125

End Sub

Module5

マクロ「Callの使い方」を実行する前(before)と実行した後(after)は以下の通りです。

Test before

Test after

——————————————

Sub 拡大125()

ActiveWindow.Zoom = 125

Application.ReferenceStyle = xlA1

End Sub

——————————————

マクロ「拡大125」で125%で拡大ズームして表示しました。
ズームした結果、大きくて逆にみずらくなってしまったという場合は。

——————————————

Sub 拡大125()

ActiveWindow.Zoom = 85

Application.ReferenceStyle = xlA1

End Sub

——————————————

とマクロ「拡大125」のプロシージャの内容を書き換えれば、
マクロ「Callの使い方」の結果も自動的に変更されます。

1つの作業で2つの修正ができたことになります。
無駄な手間・時間を使わずに済みました。何よりもミスの削減になります。

仕事もExcel VBA・マクロ作成も、“小さく・分割”して行なう。持ち時間に合わせて組み合わせれば少しでもできる。

簡単に、楽に、便利を実現しましょう。

小さなマクロを1つ作ると1つ便利になります。

小さな便利を小さなマクロ1つ作ることで実現しましょう。

マクロの作成は、モジュールは小さくして、持ち時間や疲れ具合に合わせて、取り組めるように組み立ててみてはいかがでしょうか?

そして、小さなマクロをcallで組み合わせて、もっと便利を実現しましょう。

仕事の作業も同じ発想で単位をできるだけ小さくしてみてはいかがでしょうか。

30分かかっている作業があったら、できれば10分✖3つの作業に分割できないか、もっとできれば5分✖6つの作業に分割できないか、試してみます。

そうすれば、何かの拍子に手待ち時間が10分できたとすれば、1つの作業(または5分✖2つ)をする。
30分の時間がまとまってとれず、作業が進まずイライラするなら、小さい作業が1つ済めば残りが1つ減ります。

こちらの記事

Excelのリボンは非表示にする。必要な時だけ alt キーでリボンを呼び出す。

マウスを使わずにキーボードだけでサクサクとExcelを操作する方法を紹介していますので、合わせてお読みいただければと思います。

今日の1日1新:ベトナムコーヒーとイチゴバナナスムージー

サンマルクカフェ

どちらも美味しかったです。

The following two tabs change content below.

小倉健二(労働者のための社労士・労働者側の社労士)Office新宿(東京都)

小倉健二(おぐらけんじ) 労働者のための社労士・労働者側の社労士 労働相談、労働局・労働委員会でのあっせん代理 労災保険給付・障害年金の相談、請求代理 相談・依頼ともに労働者の方に限らせていただいています。  <直接お会いしての相談は現在受付中止> ・mail・zoomオンライン対面での相談をお受けしています。 1965年生まれ57歳。連れ合い(妻)と子ども2人。  労働者の立場で労働問題に関わって30年。  2005年(平成17年)12月から社会保険労務士(社労士)として活動開始。 2007年(平成19年)4月1日特定社会保険労務士付記。 2011年(平成24年)1月30日行政書士試験合格