こんにちは、ラーメン好きなフリーランスエンジニアの”ぽんねぐ”です。
日頃Excelを使って作業している方は、出来るだけ時短テクニックを使いたいですよね?
この記事では外部のアドオンをインストール出来ない状況下の人のために、自作で作成した便利マクロをコピペで使えるように紹介します。
本題に入る前に、この記事を書いている私について簡単に紹介させて下さい。
ちなみにですが、以下記事を併せて読むと実際に自分のPCに設定出来ます。
それではさくっと紹介していきます。
自作の便利マクロの紹介
赤枠の自動生成
画像を良く取得して説明資料を作成する人は、伝えたいポイントを分かりやすくするために赤枠で囲うことがあると思います。その際、いちいち四角い図形を作成して、塗りつぶしを無しにして、枠線を赤くして、太くするのって面倒じゃありません?
そんな時に使える「赤枠の自動生成」マクロを作りました。
以下のような赤枠がワンクリックで作成出来ます。
ソースコードの紹介
Sub 赤枠の生成()
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Selection.Left, Selection.Top, 200, 100).Select
Selection.ShapeRange.Fill.Visible = msoFalse
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
End With
With Selection.ShapeRange.Line
.Visible = msoTrue
.Weight = 3
End With
End Sub
解説
1.まず初めに四角の図形を挿入する
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Selection.Left, Selection.Top, 200, 100).Select
2.次に図形の塗りつぶしを無しにする
Selection.ShapeRange.Fill.Visible = msoFalse
3.次に図形の枠線を赤色に変更
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
End With
4.最後に枠線の幅を太くする
With Selection.ShapeRange.Line
.Visible = msoTrue
.Weight = 3
End With
図形を等間隔で拡大・縮小
図形のサイズを拡大もしくは縮小したい際、図形をクリックして○を引っ張ったり、図形の書式設定で高さと幅を変更しておりますでしょうか?
そんな時に、等間隔で図形を拡大・縮小してくれるマクロを作りました。しかも複数図形を選択して一緒に拡大・縮小が可能です。
以下が例です。少し分かりづらいですが、高さと幅がマクロ実行で大きくなります。
↓↓↓↓↓
複数図形を一括選択し、同じ大きさでサイズ拡大/サイズ縮小も出来ます。
↓↓↓↓↓
大きさの違い分かりやすくするために、図形拡大マクロを複数回実行してます。
拡大の反対に縮小は以下のようになります。
↓↓↓↓↓
ソースコードの紹介
Sub 図形の拡大()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim Shp As Shape
For Each Shp In Selection.ShapeRange
With Shp
.Height = .Height * 1.1
.Width = .Width * 1.1
End With
Next Shp
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Sub 図形の縮小()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim Shp As Shape
For Each Shp In Selection.ShapeRange
With Shp
.Height = .Height * 0.9
.Width = .Width * 0.9
End With
Next Shp
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
解説
1.まず初めに画面描画やイベントを停止する
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
2.次に選択した図形を1つずつ高さと幅のサイズを任意の倍率で乗算する
Dim Shp As Shape
For Each Shp In Selection.ShapeRange
With Shp
.Height = .Height * [任意の数値]
.Width = .Width * [任意の数値]
End With
Next Shp
3.最後に画面描画とイベントを再開する
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
選択した図形のサイズを統一
とりあえず画像をたくさん撮った後にサイズを一つずつ変更していくことってありませんか?
そんな時にベースとなる画像を選択してマクロを実行すれば選択した他の図形のサイズがベース画像と同じになるマクロを作りました。
以下のように図形サイズがバラバラのものを最初に選択した図形のサイズに統一出来ます。
↓↓↓↓↓
ソースコードの紹介
Sub 図形のサイズ統一()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim Shp As Shape
Dim basicShp As Shape
For Each Shp In Selection.ShapeRange
If basicShp Is Nothing Then
'何もしない
Else
With Shp
.Height = basicShp.Height
.Width = basicShp.Width
End With
End If
Set basicShp = Shp
Next Shp
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
解説
1.まず初めに画面描画やイベントを停止する
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
2.次に選択した図形の1つ目をbasicShpとして設定し、ループを回すたびにbasicShpの高さ・幅を対象図形に適用する
Dim Shp As Shape
Dim basicShp As Shape
For Each Shp In Selection.ShapeRange
If basicShp Is Nothing Then
'何もしない
Else
With Shp
.Height = basicShp.Height
.Width = basicShp.Width
End With
End If
Set basicShp = Shp
Next Shp
3.最後に画面描画とイベントを再開する
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
全シートを表示比率100%且つAセル選択状態で保存
システムエンジニアを行っていると企業文化によっては、成果物の提出時に全シート必ず非表示倍率を100%にしてAセル選択状態にする必要があります。私が過去に働いた現場ではそうでした。
まぁ企業文化ではなくとも受け取り側の心理として、Excelのシートごとに見た目がバラバラになっていたら何となく「この人は雑な人かな?」と思いますよね?そんなところで印象を落とすのももったいないです。
しかし、シートが多いと一つずつ変更するのは手間だし、資料作成時にそんなところを意識して作成も出来ないし。。。
そんな時に一括で全シート表示倍率100%にしてAセル選択状態で保存が出来るマクロを作りました。
以下のように表示倍率も選択中のセルもばらばらのExcelファイルを一括で統一出来ます。
マクロを実行すると...
以下が表示され、全てのシートが表示倍率100%且つAセル選択状態で保存される。
ソースコードの紹介
Sub 全シートの表示倍率100パーセント且つAセルで保存()
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
With ActiveWindow
.ScrollRow = 1
.ScrollColumn = 1
End With
ws.Cells(1, 1).Activate
ActiveWindow.Zoom = 100
Next
Worksheets(1).Activate
ActiveWorkbook.Save
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox ("全シートを表示倍率100%且つAセル選択状態に変更し、保存しました。")
End Sub
解説
1.まず初めに画面描画やイベントを停止する
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
2.次にシートを順番に選択し、スクロールバーを左上に設定
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
With ActiveWindow
.ScrollRow = 1
.ScrollColumn = 1
End With
3.次にAセルを選択した状態にする
ws.Cells(1, 1).Activate
4.次に表示倍率を100%に設定する
ActiveWindow.Zoom = 100
Next
5.すべてのシートを処理後、一番左のシートを表示し、保存する
Worksheets(1).Activate
ActiveWorkbook.Save
6.最後に画面描画とイベントを再開する
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
以上です。
まとめ
この記事では、私が自作した便利なExcelマクロを紹介しました。
ソースコードをコピーして使って頂けたら時短で資料作成が出来ます。
本記事で紹介したマクロを実際に登録したい場合は、以下記事で画像付きで解説しております。
何か不明点などございましたらコメント欄に記載頂けたらと思います!
以上、最後までお読みいただきありがとうございました。