はじめてのExcel VBA。「マクロの記録」からVBAを読んでみよう。

固定ページ
Pocket

いまあるセルからsheetの中にデータがある範囲を格子の罫線で囲む

0

ctrl キー と end キーを同時に押す。

いまあるセル(アクティブセル)からsheetの中でデータがあるセルの一番下の行で一番右側の列へと移動します。

shift キーを押しながら、ctrl キー と end キーを同時に押す。

1

shift キーを押しながら、ctrl キー と end キーを同時に押してみます。

すると、いまあるセル(アクティブセル)からsheetの中でデータがあるセルの一番下の行で一番右側の列までの範囲が選択されました。

続いて、Excel上部のメニューであるリボンの「ホーム」タグから罫線をクリックして、「格子(A)」をクリックします。

3

選択した範囲、つまり、いまあるセル(アクティブセル)からsheetの中でデータがあるセルの一番下の行で一番右側の列までの範囲に格子の罫線が引かれました。

この作業をExcelの「マクロの記録」から行なってみます。

Excelマクロの記録の仕方

Excel上部のメニューであるリボンの「開発」タグから、「マクロの記録」をクリックします。

4

5

6

マクロ名を入力して、OKをクリックします。

そして、見出し「いまあるセルからsheetの中にデータがある範囲を罫線で囲む」で行なったことを同じように行ないます。

終わりましたら、リボンの「開発」タグから「記録終了」をクリックします。

7

これでマクロが作成できました!

alt キーと F8 キーを同時に押して、マクロの一覧を表示してマクロを選択してOKをクリックすればマクロが実行できます。

マクロの記録でマクロを作成する。これだけでもOKです。

ExcelでVBAマクロを知りたいという方は、
ここからVBAマクロの理解へと進みます。

マクロの記録で作成したプログラムをVBA (Visual Basic Editor)で修正する。

alt キーと F11 キーを同時に押して、VBA (Visual Basic Editor)を開きます。

8

——————————————————————-
Sub 囲い罫()

‘ 囲い罫 Macro


Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
——————————————————————-

マクロ記録で書かれたVBA 読めない言葉をコピーしてネットで検索する

英語ばかりで何を書いてあるのか、よくわかりません。

しかし、With〜End Withの中で、()中だけがちがいますので

Bordersと()の中の言葉の意味、

xlEdgeLeft
xlEdgeTop
xlEdgeBottom
xlEdgeRight
xlInsideVertical
xlInsideHorizontal

()のあとに続く、
以下の意味がわかれば、VBAプログラムの意味がわかります。

LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin

ネットで検索した言葉の解説をVBAコードの最後にコメントとして貼り付ける

プログラムが書かれた行の後ろに「’」(shift キーと「7」キーを同時に押す)を入力します。

VBAプログラムでは、行の中で「’」の後ろはプログラムではなくコメント(説明文)となります。

「’」の後ろにネットで検索して調べた意味をコピー&ペーストします。

「Borders」 セルの罫線

‘「xlEdgeLeft」 左端
‘「xlEdgeTop」 上端
‘「xlEdgeBottom」 下端
‘「xlEdgeRight」 右端
‘「xlInsideVertical」 内側縦線
‘「xlInsideHorizontal」 内側横線

.LineStyle = xlContinuous ‘「xlContinuous」実線
.ColorIndex = 0 ‘「ColorIndex = 0」黒
.TintAndShade = 0 ‘「TintAndShade」セルの網掛けの色の明るさ 0は未設定
.Weight = xlThin ‘「xlThin」罫線の種類は細い

これで、VBAで書かれたマクロが読めます。
今後の参考になる自分のマニュアルになります。

いらなそうなコードをコメントにしてF8で1行づつコードを実行して試す

実行しない行のプログラムの前に「’」(shift キーと「7」キーを同時に押す)を入力します。

VBAプログラムでは、行の中で「’」の後ろはプログラムではなくコメント(説明文)となります。

動けばいらないコードですので、1行づつコメントにして試しましょう。

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

「xlNone」“None”なのだから、いらなそうです。

「xlEdgeTop」 上端
「xlEdgeBottom」 下端
「xlEdgeRight」 右端
「xlInsideVertical」 内側縦線
「xlInsideHorizontal」 内側横線

「Borders」左端も右端も、上端も下端も、内側の縦線も横線も格子で罫線を引くということを「Borders」(セルの罫線)の左端も右端も上端も下端も内側の縦線も横線ということで表現しているように見えます。

「Borders」全部をどうにかするということのようです。
それであれば、は、()の中のそれぞれのあれもこれもを削除して、
「Borders()」を「Borders」だけで表現できれば単純になります。試してみてはいかがでしょうか。
(ダメなら元の記述に戻せば良いだけです。)

続いては、Borders()の下の行のプログラムです。

.LineStyle = xlContinuous ‘「xlContinuous」実線
.ColorIndex = 0 ‘「ColorIndex = 0」黒
.TintAndShade = 0 ‘「TintAndShade」セルの網掛けの色の明るさ 0は未設定
.Weight = xlThin ‘「xlThin」罫線の種類は細い

「0」は未設定ということですので、

.ColorIndex = 0 ‘「ColorIndex = 0」黒
.TintAndShade = 0 ‘「TintAndShade」セルの網掛けの色の明るさ 0は未設定

は削除しても良さそうです。

.LineStyle = xlContinuous ‘「xlContinuous」実線
.Weight = xlThin ‘「xlThin」罫線の種類は細い

の2行だけを「’」でコメントにしてテストしてみれば良さそうです。

このように「マクロの記録」で作成されたVBAのプログラムの言葉(英語)を「Excel VBA」に続けてペースト(貼りつけて)Googleなどで検索してみましょう。

そして、必要ないと思われるプログラムの行をコメントにして、それでも目的のプログラムとして正しい結果が出たら、コメントにした行を削除すると、プログラムの意味が理解でき、シンプルで自分が見て意味がわかるプログラムが出来上がります。

(実際には、ここまでネットで全部検索する前に、いくつか検索している途中で以下の2行で表現できてしまうことを探し出せてしまうと思いますが、今回は例として調べてみました。)

今回は、結果として以下の単純な2行で表現できました。

—————————————————————–
Sub 囲い罫()

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

Selection.Borders.LineStyle = xlContinuous

End Sub
—————————————————————–

9

実行しない行のプログラムの前に「’」(shift キーと「7」キーを同時に押す)を入力します。

VBAプログラムでは、行の中で「’」の後ろはプログラムではなくコメント(説明文)となります。

動けばいらないコードですので、1行づつコメントにして試しましょう。

残った必要な行が、あなたが作りたかったプログラムです。

VBAで作るプログラムを、どのように書くのか?実践的に学べます。

お試しいただければと思います。

【編集後記】

もうすすきが広がっています。

オランダ語の辞書もない中で「フルヘッヘンド」とは何を意味する言葉なのかを探るターヘル・アナトミアの翻訳の作業を語る杉田玄白の話がワクワクして面白く思います。

辞書もない中で翻訳に挑んだ杉田玄白のころと比べれば、初めて取り組むExcelVBAは敷居が高く感じても、マクロの記録とネット検索で調べられる現在は私たち初心者にも優しい環境と言えます。楽しく取り組みたいですね。

週末の1日1新

BAY SIDE JAZZ 2018 CHIBA

音楽スクールの生徒達による演奏。
思わず涙が出そうになりました。
素人の演奏でも感動させることはできるんだ。
年配の方も多かったです。
やりたいことをやってみるのは素晴らしい。
そしてJAZZが好きなことを改めて実感しました。
全く詳しくないのですがJAZZが好きです。

千房(CHIBO)のお好み焼き

美味しかったです。

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日行政書士試験合格