Excel 赤枠のマクロを作ってみた

公私共に頻繁にExcelで赤枠を使うことがある。

いつも前のシートなり他のエクセルの赤枠をコピーして使っている。

あるいは、挿入の図形から□のオブジェクトを選択し置いて塗りつぶしを無しにして色を赤、幅3pxに設定をすることを行っていた。

これが意外と手間でいつも気にしていなかったが、ふと、マクロ化してみようと思い立った。

そこで赤枠を作ってくれるマクロを作り作業の効率化する。

※作成後のソースコードはこちら

目次

マクロの記録を使い、処理のベースを作る

手順概要:マクロの記録で記録中に赤枠を作る。

開発タブのマクロの記録をクリックします。

マクロの記録の画面でそのままOKを選択

通常の操作で赤枠を作成する(私の場合は挿入で□のオブジェクト選択、塗りつぶしなし、枠色を赤、枠の太さ3px)

赤枠作成後、記録終了を選択する。

開発タブのマクロを選択、マクロの画面で編集をクリックする。

すると、Microsoft Visual Basicの画面が表示される。Macro1という名前のメソッドと処理(ソース)が書かれているのが分かる。

一旦Excelに戻り作成されたマクロを実行してみる。

すると、先程作成した赤枠と同様の位置に同様の赤枠が作成される。

これでベースの作成は完了。

しかし、このままでは使いたい位置に赤枠が作成されず

固定の位置に作成されてしまうため、動的に位置を変えられるようにしたい。

一部だけ処理を変更する

手順概要:ソースの一部を変更し動的に描画位置を変えられるようにする。

Microsoft Visual Basicの画面で先程確認したソースをみる。

この行でセルの描画位置を指定しているように見える。(他の行にセルを指定していそうな箇所は見当たらなかった)

ActiveSheet.Shapes.AddShapeについてネットで調べてみる。

すると第2引数、第3引数がぞれぞれLeft,Topのポイントの位置を指定していることが分かった。

docs.microsoftの内容を参考にしました。

つまり、このポイントを動的に設定することにより

好きな位置に赤枠を置けるようになることが分かる。

ポイントの取得は以前から知っていたので

selection.leftとselection.topを利用して取得する。

初めての人は、”excel セル ポイント取得”

とかで調べれば取得の方法の記事が見つかるはず。

そのまま引数に値として使用する。

変更したソースは以下の通り。

動作確認

Excelの画面から任意のセルを選択してマクロを実行してみる。

すると・・・

左下の赤枠が追加されている

選択したセルの位置をベースに赤枠のオブジェクトが描画されていることが確認できた。

後は、使いやすいようにツールバーに作成したマクロを追加すればいつでも使えるようになる。

最終的なソースコードはこちら

Sub 赤枠()
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Selection.Left, Selection.Top, 278, 192).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
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次