【VBA✖テストエンジニアリング4】エビデンス採取ツール(実際にどこの現場でも個人的に開発して使ってるツール)の作りかた④~やっと今回から少し、処理コードを編集( ´∀` )
さてと、前回
で、
◆シート・セルの操作フレーム
書式ボタン
シート追加ボタン
シート番号入力ボタン
行追加ボタン
行の高さボタン
A1選択ボタン👈前回
A4選択ボタン👈前回
◆図の操作フレーム
手順番号ボタン
手順番号入力ボタン
黒枠縮小のみボタン👈前々回
スクショ画像ボタン👈前々回
挿入した図ボタン👈前回
吹き出しボタン
赤枠ボタン
折れ線ボタン
右矢印ボタン
下矢印ボタン
◆シートリストフォーム
シート数ラベル
シート数カウントラベル
シート名リスト
てな感じで5つ終わったので、今回は、マクロの記録のみで作れる機能の最終で
書式ボタン
シート追加ボタン
行の高さボタン
をやってく💃
本題に入る前に、この連載で通底する考え方を列挙しとくや( ´∀` )
(開発現場における)VBAの鉄則
コードの8割はマクロの記録で、Excelに書かせる(👉開発現場は学校のお勉強じゃない。開発現場に「マクロの記録は邪道」なんて存在しない)
小さく作って、大きく動かす(一度書いたコードは再利用する)
手で動かして、出来ないことは基本、コードでも出来ないし、やらない方が良い(小難しい機能はバグと改修コストになるので)
グローバルに変数や引数は定義する(同じものはひとつにまとめた方が管理が楽)
関数こそ最強のAPI(👈今回のツールでは関係ないので、やらない)
「〇〇すればいい。」、「〇〇でやればいい」が最大の敵
ここまでの関連記事
☆基本的な流れ
1、マクロの記録でマクロを起こす
↓
2、マクロの余計なコードを消す
↓
3、ユーザーフォームにコマンドボタンを追加する
↓
4、編集したマクロをユーザーフォームに追加する
↓
5、コマンドボタンのコード内でCallステートメントで追加したマクロを呼び出す
んだば、早速
■行の高さボタンを作ろう
テスト作業時にQA表なんかに書き込むときに、図を備考に貼り付けて、質問したいときなんかに
列の高さは自分で調整すればいいんだけど、
行の高さを調整するのが面倒
なのでよく使う( ´∀` )
手でやる操作を書き起こすと
行の高さを変更した行を選ぶ
右クリック
数字を入力
OKボタンを押す
と簡単な操作に見えるが
作業工程が4つあり、
毎回手でやるのは面倒くさい
全部最初から行の高さを大きくしておくことも出来なくはないけど、
毎回、図を挿入しないといけない質問
ばかりではない
ので、
臨機応変に図を挿入したいときだけ、
行の高さを変えた方が便利
では、いつもどおり、基本的な流れで~~~
①マクロの記録でマクロを起こす
開発タブ>マクロの記録
OKボタンをクリック
適当な行を選ぶ(今回は3行目)
その状態で、右クリック>行の高さをクリック
行の高さの数字を234など、変えたい数字に変更してOK
行の高さが変わったのが確認出来たら、記録の終了ボタンをクリック
②マクロの余計なコードを消す
左上のVisualBasicをクリックして、VBE画面を開く
左側のプロジェクトエクスプローラー>標準モジュールで、今回のマクロが記録されたModuleをダブルクリック
コード編集部分で、今回のコードが自動入力されているのを確認
Sub Macro1()
'
' Macro1 Macro
'
'
Rows("3:3").Select
Selection.RowHeight = 234
End Sub
余計なコードを消す。
今回は、3行目を選んでるのと、コメント行が要らないので削除
・変更前
Sub Macro1()
'
' Macro1 Macro
'
'
Rows("3:3").Select
Selection.RowHeight = 234
End Sub
・変更後
Sub Macro1()
Selection.RowHeight = 234
End Sub
③ユーザーフォームにコマンドボタンを追加する
左側のプロジェクトエクスプローラー>エビデンス採取ツールをダブルクリックし、フォーム編集画面を表示
3個前の記事で追加したコマンドボタンが余ってるので、前回同様に、そのコマンドボタンを選んで、
左下のプロパティウィンドウで、オブジェクト名とCaptionを変更
④編集したマクロをユーザーフォームに追加する
Module3をダブルクリックして、コードを再表示
さっきのコードを切り取って、
これまでの操作と同じ方法で、行の高さボタンをダブルクリックして、コードを追加して、切り取ったコードを貼り付け
⑤コマンドボタンのコード内でCallステートメントで追加したマクロを呼び出す
後は、ここもいつもの方法で
・変更前
Private Sub 行の高さボタン_Click()
End Sub
Sub Macro1()
Selection.RowHeight = 234
End Sub
・変更後
Private Sub 行の高さボタン_Click()
Call 行の高さを変更
End Sub
Sub 行の高さを変更()
Selection.RowHeight = 234
End Sub
てな感じに変更
⑥他の行でも同じ高さに変更できるかを確認・検証
今回は、ちょっとこのコードの面白さも示すため
ユーザーフォームを開いて、行の高さボタンをクリック
見てのとおり、
全部、まとめて選択した範囲の
行の高さを変更できた💃
ここでポイント①:Selectionは便利
これが実は、マクロの記録で書いたコードが
Sub 行の高さを変更()
Selection.RowHeight = 234
End Sub
で
Selection:選択した箇所=複数箇所でもOK
になっているから。コード大好きっこちゃんが教科書どおりに使う
ActiveCellみたいな他のコードだと、1カ所しか選択できないコードもあるから違いに気を付けてね
ここでポイント②:別に行を選択しなくてもOK
ここまでの説明だけ読むと、「いずれも行を選択しないといけないから面倒じゃね❓👀大して便利になってなくね👀❓」って即断即決で思い込む人もいるんだけど
ユーザーフォームからさっきのボタンをクリックしても
実は、行全体を指定してなくても、
選択した箇所の行の高さを指定した値に変更する
ってコードの書き方を自動でやってくれてるので、
ちょっと何かの作業で、行の高さを広くしたい
なんてときに
ボタンひとつで出来るので
めちゃくちゃ作業がはかどる( ´∀` )
SelectionとActiveCellなんかの違いについては、動かし慣れてる人でもあまり知らなかったり(てか、本によってはSelection自体が出てこなかったりするから)、
便利だし覚えといてね~~~~💃
ここでポイント③:要らなくなったModuleは定期的にモジュールの解放で削除する
マクロの記録でVBAをやってるとどうしても、
Excelが勝手にModuleを追加する
ので、プロジェクトエクスプローラーに
Moduleが増えていく、、、💦
今でもModule1~Module3と既に増えてるので
こんなもん残っていても邪魔なので、要らなくなったら、削除するModuleを右クリック>~の解放をクリック
確認ダイアログが出てくるので
どこかのフォルダにモジュールを残したい:はい
どこかのフォルダにモジュールを残さなくていい:いいえ
って感じでどちらかのボタンをクリック。
一歩前へ:「別に空白=何もない👉何もしてないってプロなら分かるんだから残しておいても問題ないのでは❓👀」
って感じで、残しても問題ないってゆー人や組織も実際に過去見たことがあるんだけど、
空白で今は何もしてないように見えて、これを意図的に残しているのか分からない
👉今後使う予定なのか、現在何かで使ってるのか、何か特殊なことをやってるのかがこれだけだと不明
「設計書とか申し送りに書くからそこ見たら良いじゃん( ´∀` )」
👉こーゆー人に限って、ドキュメントに追記漏れしてるか、そんなことはわざわざ書かなくても分かるから敢えて書かないみたいな人も自称さんでは多い。しかも、
3日後の自分は他人
なので、そーやって追記も記録にも残さない本人が、半年後とかに
なんで、こんな空白のモジュールを
残してんだっけ❓👀💦
ってなってたりする( ´∀` )
前回もゆーたとおり、プログラミングにも必要なのは
思いやり
👉目先で面倒くさいと思っても、要らなくなったものは早めに削除なんかして
ソース自体をちゃんと整理しておく💃
👉リファクタリング
=転ばぬ先の杖
■書式ボタンを作ろう
このボタンはねえ💦No1のシートの1~2行目を見てもらうと分かるんだけど、
Microsoftさんのセンスのなさ
なのか、シートを追加するとなぜか初期設定で
フォント:游ゴシック
フォントサイズ:11
にしてんだよねえ( ´∀` )デザインセンスのない人は、読めればいいって感じで、そんなこと気にも留めないし、窓(Windows)信者様に至っては、
さすがMicrosoftさん
って、逆にこの初期設定で統一しろって人まで組織には居たりするんだけど、、、💦
ここでポイント④:人は読みにくいものは読もうとしない(デザインの鉄則)
で、読みにくいものは読もうとしないし、それでも業務で読みにくいものを読もうとすると、
余計なストレスがかかる
読み落としや読み飛ばしが発生する
のが人情ってものなので、大体、どこの職場でも読みやすいって言われる
フォント:Meiryo UI
フォントサイズ:12
でオイラなら、全シートを統一しちゃう
👉確認者の人が読みやすい方が、
確認まで含めてサクサク作業が進むから
なので、ここでマクロに記録する操作は
全シートを選択
フォント:Meiryo UI
フォントサイズ:12
ついでに、罫線も非表示の方が見やすいので、罫線なし
の手順( ´∀` )
では、実際に操作
①マクロの記録でマクロを起こす
さっきと同じ感じで、マクロの記録でOKボタンをクリックして、
全シートを選択
フォント:Meiryo UI
フォントサイズ:12
ついでに、目盛線も表示なしの方が見やすいので、目盛線なし
をやってから記録の終了
②マクロの余計なコードを消す(ついでに編集)
VBE画面を開く
コードが起こされてるので、前々回ゆーた
=0と=Falseは、
削除して、ほぼ問題なし
を使って、
・変更前
Sub Macro2()
'
' Macro2 Macro
'
'
Cells.Select
With Selection.Font
.Name = "Meiryo UI"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Selection.Font.Size = 12
ActiveWindow.DisplayGridlines = False
End Sub
・変更後
Sub Macro2()
Cells.Select
With Selection.Font
.Name = "Meiryo UI"
.Size = 11
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.ThemeFont = xlThemeFontNone
End With
Selection.Font.Size = 12
ActiveWindow.DisplayGridlines = False
End Sub
余計なコードは全部消す。さらに、
.Size = 11
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.ThemeFont = xlThemeFontNone
なんかも明らかに今回操作してない余計なコードだと分かるので消すと
Sub Macro2()
Cells.Select
With Selection.Font
.Name = "Meiryo UI"
End With
Selection.Font.Size = 12
ActiveWindow.DisplayGridlines = False
End Sub
てな感じでスッキリする。
ここまで来たら、Withは要らないので削除
Sub Macro2()
Cells.Select
Selection.Font.Name = "Meiryo UI"
Selection.Font.Size = 12
ActiveWindow.DisplayGridlines = False
End Sub
さらに、前々回のもう一歩前へで、ゆーた小分けにして、各コマンドを再利用しやすいようにする作法を使って、
Option Explicit
Sub シート全範囲選択()
Cells.Select
End Sub
Sub 選択文字をMeiryoUIにする()
Selection.Font.Name = "Meiryo UI"
End Sub
Sub フォントサイズを12にする()
Selection.Font.Size = 12
End Sub
Sub 目盛線の表示を変更()
ActiveWindow.DisplayGridlines = False
End Sub
ここでポイント⑤:有効無効は、ボタンを押すたびに切替えできるようにしておくと、複数ボタンを作らなくてよくなる
小分けにした最後の、
Sub 目盛線の表示を変更()
ActiveWindow.DisplayGridlines = False
End Sub
は、目盛線を非表示するだけのコマンドになっているのが分かるんだけど、
Falseが無効なら、反対のTrueが有効
って分かるので、今後、再利用できるようにさらに、
Sub 目盛線の表示を変更()
ActiveWindow.DisplayGridlines = False
End Sub
Sub 目盛線の表示()
ActiveWindow.DisplayGridlines = True
End Sub
Sub 目盛線の非表示()
ActiveWindow.DisplayGridlines = False
End Sub
小分けにしたSubを追加して、If文を使って
Sub 目盛線の表示を変更()
If ActiveWindow.DisplayGridlines = False Then
ActiveWindow.DisplayGridlines = True
Else
ActiveWindow.DisplayGridlines = False
End If
End Sub
Sub 目盛線の表示()
ActiveWindow.DisplayGridlines = True
End Sub
Sub 目盛線の非表示()
ActiveWindow.DisplayGridlines = False
End Sub
てな感じで条件分岐させておく( ´∀` )
③ユーザーフォームにコマンドボタンを追加する
ここから先は今までと同じ流れで、エビデンス採取ツールに書式ボタンを追加して、
④編集したマクロをユーザーフォームに追加する
コマンドボタンさっき編集したコードを貼り付け
⑤コマンドボタンのコード内でCallステートメントで追加したマクロを呼び出す
で、Callで各Subを追加
・変更前
Private Sub 書式ボタン_Click()
End Sub
・変更後
Private Sub 書式ボタン_Click()
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 目盛線の表示を変更
End Sub
⑥期待値どおりに他のシートでも動くか検証
冒頭で作ったQAシートも初期設定になってるので~~~
ユーザーフォームから書式ボタンをクリックして、実行
で、もう一回、書式ボタンをクリックすると、、、
No1シートでも
まあ、今のままだと最初にシートの全範囲を選択してるから、書式ボタンをクリックする度に
ドラッグされるのが嫌な人は、前回作ったA1選択Subを
Private Sub 書式ボタン_Click()
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 目盛線の表示を変更
Call A1選択
End Sub
てな感じで呼び出してあげるだけで
のでやってみて🕺
書式ボタンの応用で、シート追加ボタンも同じ手順で簡単に作れるので~~
■シート追加ボタンを作ろう
この記事の1回目で見せた
テスト経験者なら分かると思うんだけど、実はコレ
テストパターンでは標準かまだ数が少ない方
※テストパターンで70~100とかテストケースがあるのはザラ( ´∀` )ワッショイ
そんなとき、
テストケースごとにシートを100個なら100枚追加
書式をフォントサイズ12にして、
フォントを見やすいものにして、
目盛線を非表示にして、…
なんてやってたら
日が暮れる( ;∀;)
👉(前回ゆーた)
反復ストレス症候群( ´∀` )
なので、ここも
繰り返される同じ操作は、
マクロ化した方が圧倒的に
操作ミスなく、時間短縮できる
オイラがここでよくやる操作は、
さっきの書式ボタンで記録した
全シートを選択
フォント:Meiryo UI
フォントサイズ:12
ついでに、目盛線も表示なしの方が見やすいので、目盛線なし
も使うけど、
現在選んだセルの右横に新規のシート
A列を右寄せ
シート全体を太文字
シート名を押すたびに連番(1、2、3…)で変更
も追加でマクロ化って感じ( ´∀` )
①マクロの記録でマクロを起こす
これまでと同じ操作でマクロを記録し、必要な操作だけしたら、記録を終了してく。
記録しながらやる操作はこれだけ
現在選んだセルの右横に新規のシート追加
全シートを選択
フォント:Meiryo UI
フォントサイズ:12
シート全体を太文字
目盛線なし
A列を右寄せ
シート名を押すたびに連番(1、2、3…)で変更
で、記録の終了までした結果が
②マクロの余計なコードを消す(ついでに編集)
VBE画面で対象のModuleを開くと、コードが表示されてるので~~
いつもと同じ=Falseと=0で、余計なコードは削除
・変更前
Sub Macro4()
'
' Macro4 Macro
'
'
Sheets.Add After:=ActiveSheet
Cells.Select
With Selection.Font
.Name = "Meiryo UI"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Selection.Font.Size = 12
Selection.Font.Bold = True
ActiveWindow.DisplayGridlines = False
Columns("A:A").Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "No2"
End Sub
・変更後
Sub Macro4()
Sheets.Add After:=ActiveSheet
Cells.Select
Selection.Font.Name = "Meiryo UI"
Selection.Font.Size = 12
Selection.Font.Bold = True
ActiveWindow.DisplayGridlines = False
Columns("A:A").Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
End With
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "No2"
End Sub
次に、さっきの書式ボタンで作ったマクロはそっちを使えばいいので不要なので削除
Option Explicit
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
End With
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "No2"
End Sub
さらに、With~End WithのA列の設定について、右寄せ=Rightにした以外は別に何もしてないので削除
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").Select
With Selection
.HorizontalAlignment = xlRight
End With
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "No2"
End Sub
ここまで来ると、
Columns("A:A").Select
With Selection
.HorizontalAlignment = xlRight
End With
はあきらかにWithとEnd Withが不要で、しかも、1行目と繋げられるので
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").HorizontalAlignment = xlRight
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "No2"
End Sub
と、ここまでシンプルになったところで、さっきのシートをいったん削除して、再実行すると
実行する度に、新規シートを追加するけど、
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "No2"
で指定した、Sheet4がプロジェクトエクスプローラー上にも存在しないし、
Excel上にも存在しない
やりたい操作としては、新規で追加したシートは、
で、
新規追加シートが選択されてる
=アクティブなシート
なはずなので、コードを編集
存在しないSheet4を選んでる
Sheets("Sheet4").Select
は削除して、
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").HorizontalAlignment = xlRight
Sheets("Sheet4").Name = "No2"
End Sub
Sheets("Sheet4").Name = "No2"
を
アクティブなシート=ActiveSheet
に変更して、
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").HorizontalAlignment = xlRight
ActiveSheet.Name = "No2"
End Sub
再実行
このままだと、次に実行したときに
エラーになるので、連番でシート名を追加できるように
変数
を使って、
ActiveSheet.Name = "No2"
ここの右辺の値を変更できるようにしてく。
今回は、シート番号なので、変数を
sheetNumber
って感じで定義してくんだけど、
ここでポイント⑥:グローバルに変数や引数は定義する(同じものはひとつにまとめた方が管理が楽)
一般的によく教科書なんかでもやってるのが
Sub Macro4()
Dim sheetNumber As Integer
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").HorizontalAlignment = xlRight
ActiveSheet.Name = "No2"
End Sub
てな感じで、使うSubプロシージャの中に定義しちゃうやりかた。
これが一般的なんでほぼほぼ皆さんこれでやってるんだけど、これだと、
同じ役割の変数なのに、
各処理の中に似通った名前のコードが存在
して、
改修時に改修箇所が増える
似通った名前の変数で見落としや改修漏れが発生する
👉全てバグの原因に繋がる
全部把握したとしても、改修が面倒
👉改修コストや管理コストがかさむ
ので、OptionExplicitと最初のSubの間に持ってくる
で、コマンドボタンを押すたびに、
連番=シート番号に+1
をすればいいだけなので、
sheetNumber = sheetNumber + 1
ActiveSheet.Name = "No" & sheetNumber
てな感じで、実際に変数を使う処理の直前に追記しておくだけ
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").HorizontalAlignment = xlRight
sheetNumber = sheetNumber + 1
ActiveSheet.Name = "No" & sheetNumber
End Sub
ここまでの操作で、既にNo1シートとNo2シートは存在するので、便宜的にシート名を変更して、
さっきまで追加された余計なシートも削除
この状態で、5回実行してみると、No1~No5シートが末尾に追加された💃
ここまで確認出来たら、No1~No5シートは要らないので削除
それで、書式ボタンと同じようにコードを処理単位で小分けにして
・変更前
Sub Macro4()
Sheets.Add After:=ActiveSheet
Selection.Font.Bold = True
Columns("A:A").HorizontalAlignment = xlRight
sheetNumber = sheetNumber + 1
ActiveSheet.Name = "No" & sheetNumber
End Sub
・変更後
Sub 末尾に新規シートを追加()
Sheets.Add After:=ActiveSheet
End Sub
Sub 選択箇所を太字()
Selection.Font.Bold = True
End Sub
Sub A列右寄せ()
Columns("A:A").HorizontalAlignment = xlRight
End Sub
Sub シート名を変更()
sheetNumber = sheetNumber + 1
ActiveSheet.Name = "No" & sheetNumber
End Sub
※変数の考え方について気になる方は、
も参考にしてみてね( ´∀` )
③ユーザーフォームにコマンドボタンを追加する
ここまで来たら後は、これまでの手順と同様に、エビデンス採取ツールフォームにコマンドボタンを追加して、オブジェクト名とCaptionを変更して
てな感じ
④編集したマクロをユーザーフォームに追加する
さっきのマクロを切り取って、エビデンス採取ツールフォームに貼付け
変数は、Sub~End Subの間か、グローバル領域の中だけで定義できるので
⑤コマンドボタンのコード内でCallステートメントで追加したマクロを呼び出す
シート追加ボタンをダブルクリックして追記されたコード
Private Sub シート追加ボタン_Click()
End Sub
に、
現在選んだセルの右横に新規のシート追加
全シートを選択
フォント:Meiryo UI
フォントサイズ:12
シート全体を太文字
目盛線なし
A列を右寄せ
シート名を押すたびに連番(1、2、3…)で変更
の順番でCallしてくだけ
Private Sub シート追加ボタン_Click()
Call 末尾に新規シートを追加
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 選択箇所を太字
Call 目盛線の表示を変更
Call A列右寄せ
Call シート名を変更
End Sub
てな感じ
⑥ユーザーフォームから実行して、確認・検証
Excel表でいつもどおりユーザーフォームを開いて、シート追加ボタンを実行
実行すると、シートは追加された
やはり、シート全体が選択されてるのが気になるので、今追加したシートは削除して、
ユーザーフォームも一度、右上の✕で閉じて
A1選択を、シート追加ボタンの処理に追加しておこう( ´∀` )
Private Sub シート追加ボタン_Click()
Call 末尾に新規シートを追加
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 選択箇所を太字
Call 目盛線の表示を変更
Call A列右寄せ
Call シート名を変更
Call A1選択
End Sub
で、再度ユーザーフォームから実行
リファクタリング
ここまでで今のエビデンス採取ツールフォームのコード全体を示すと
Option Explicit
Dim sheetNumber As Integer
Private Sub A1選択ボタン_Click()
Call A1選択
End Sub
Sub A1選択()
Range("A1").Select
End Sub
Sub A4選択()
Range("A4").Select
End Sub
Private Sub A4選択ボタン_Click()
Call A4選択
End Sub
Private Sub シート追加ボタン_Click()
Call 末尾に新規シートを追加
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 選択箇所を太字
Call 目盛線の表示を変更
Call A列右寄せ
Call シート名を変更
Call A1選択
End Sub
Sub 末尾に新規シートを追加()
Sheets.Add After:=ActiveSheet
End Sub
Sub 選択箇所を太字()
Selection.Font.Bold = True
End Sub
Sub A列右寄せ()
Columns("A:A").HorizontalAlignment = xlRight
End Sub
Sub シート名を変更()
sheetNumber = sheetNumber + 1
ActiveSheet.Name = "No" & sheetNumber
End Sub
Private Sub スクショ画像ボタン_Click()
Call 縮小60パーセント
Call 黒枠
Call 埋込
End Sub
Private Sub 行の高さボタン_Click()
Call 行の高さを変更
End Sub
Sub 行の高さを変更()
Selection.RowHeight = 234
End Sub
Private Sub 黒枠縮小のみボタン_Click()
Call 縮小60パーセント
Call 黒枠
End Sub
Private Sub 書式ボタン_Click()
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 目盛線の表示を変更
Call A1選択
End Sub
Sub シート全範囲選択()
Cells.Select
End Sub
Sub 選択文字をMeiryoUIにする()
Selection.Font.Name = "Meiryo UI"
End Sub
Sub フォントサイズを12にする()
Selection.Font.Size = 12
End Sub
Sub 目盛線の表示を変更()
If ActiveWindow.DisplayGridlines = False Then
ActiveWindow.DisplayGridlines = True
Else
ActiveWindow.DisplayGridlines = False
End If
End Sub
Sub 目盛線の表示()
ActiveWindow.DisplayGridlines = True
End Sub
Sub 目盛線の非表示()
ActiveWindow.DisplayGridlines = False
End Sub
Private Sub 挿入した図ボタン_Click()
Call 挿入した図のサイズを変更
Call 黒枠
Call 埋込
End Sub
Sub 縮小60パーセント()
Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft
End Sub
Sub 黒枠()
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
End With
End Sub
Sub 埋込()
Selection.Placement = xlMoveAndSize
End Sub
Sub 挿入した図のサイズを変更()
Selection.ShapeRange.Height = 345.5433070866
Selection.ShapeRange.Width = 614.5511811024
End Sub
とまあ、処理は実行できるんだけど、
グチャグチャで見にくい
ここでポイント⑦:コードがぐちゃぐちゃになっちゃう原因
コマンドボタンみたいなオブジェクトをダブルクリックする度に、自動で最終行の下に追記してくれればいいんだけど、
そこまでは、やってくんないから( ´∀` )
👉自分で綺麗に直すしかない
なので、
綺麗に整理
👉リファクタリング
=コードを安全に管理する技術
◆リファクタリング後
Option Explicit
'グローバル変数---------------------------
Dim sheetNumber As Integer
'呼び出し元のオブジェクト------------------
Private Sub スクショ画像ボタン_Click()
Call 縮小60パーセント
Call 黒枠
Call 埋込
End Sub
Private Sub 黒枠縮小のみボタン_Click()
Call 縮小60パーセント
Call 黒枠
End Sub
Private Sub 挿入した図ボタン_Click()
Call 挿入した図のサイズを変更
Call 黒枠
Call 埋込
End Sub
Private Sub A1選択ボタン_Click()
Call A1選択
End Sub
Private Sub A4選択ボタン_Click()
Call A4選択
End Sub
Private Sub 行の高さボタン_Click()
Call 行の高さを変更
End Sub
Private Sub 書式ボタン_Click()
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 目盛線の表示を変更
Call A1選択
End Sub
Private Sub シート追加ボタン_Click()
Call 末尾に新規シートを追加
Call シート全範囲選択
Call 選択文字をMeiryoUIにする
Call フォントサイズを12にする
Call 選択箇所を太字
Call 目盛線の表示を変更
Call A列右寄せ
Call シート名を変更
Call A1選択
End Sub
'呼び出される処理(マクロ)------------------
Sub 縮小60パーセント()
Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft
End Sub
Sub 黒枠()
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
End With
End Sub
Sub 埋込()
Selection.Placement = xlMoveAndSize
End Sub
Sub 挿入した図のサイズを変更()
Selection.ShapeRange.Height = 345.5433070866
Selection.ShapeRange.Width = 614.5511811024
End Sub
Sub A1選択()
Range("A1").Select
End Sub
Sub A4選択()
Range("A4").Select
End Sub
Sub 行の高さを変更()
Selection.RowHeight = 234
End Sub
Sub シート全範囲選択()
Cells.Select
End Sub
Sub 選択文字をMeiryoUIにする()
Selection.Font.Name = "Meiryo UI"
End Sub
Sub フォントサイズを12にする()
Selection.Font.Size = 12
End Sub
Sub 目盛線の表示を変更()
If ActiveWindow.DisplayGridlines = False Then
ActiveWindow.DisplayGridlines = True
Else
ActiveWindow.DisplayGridlines = False
End If
End Sub
Sub 目盛線の表示()
ActiveWindow.DisplayGridlines = True
End Sub
Sub 目盛線の非表示()
ActiveWindow.DisplayGridlines = False
End Sub
Sub 末尾に新規シートを追加()
Sheets.Add After:=ActiveSheet
End Sub
Sub 選択箇所を太字()
Selection.Font.Bold = True
End Sub
Sub A列右寄せ()
Columns("A:A").HorizontalAlignment = xlRight
End Sub
Sub シート名を変更()
sheetNumber = sheetNumber + 1
ActiveSheet.Name = "No" & sheetNumber
End Sub
整理するとこんな感じ( ´∀` )
とりあえず、今回の解説は以上。
さてと、次回は
やっとこ、コードの編集が必要な操作の説明にも入れたけど、
実は今のままだと、シート追加ちゃんは、ユーザーフォームを開きなおして実行すると、
さっきと同じエラーが発生( ´∀` )
って現象の原因とそれを回避する機能
シート番号入力ボタン
から解説して、繋がってるので、
手順番号ボタン
手順番号入力ボタン
の説明をやろうかね💃
明日明後日は、大手新聞5紙を毎年恒例で読むので、
続きは、1月3日からかな( ´∀` )
んだば、
続きは、また次回💃
今回の関連記事
以下は、GoogleAppsScriptの記事ではあるけど考え方は同じなので~~~
違うプログラミング言語でも通じる考え方なんだ👀💦
ってだけ思ってもらえたら幸い💃