エクセルのオートシェイプを簡単に描いてしまおう☆文系初心者もわかるコピペVBA

 

いたちめです。

 

エクセルを表計算じゃなくて、様式として使ってる方。

オートシェイプを使って、○印をつけていませんか?

 

面倒ですよね、それ

 

想像して下さい。

 

会社の様式にオートシェイプを付けるのはいいけど

形がいびつだったり、位置がずれてたりして

 

イライラする。

 

 

それが

 

VBAのコードにコピペして、ちょこっと加工すれば

 

「おいおい、今までの苦労はなんだったんだ?」

「ちょっと待って、今までの苦労を返して欲しいんだけど」

 

となるわけです。

 

面倒じゃない方も、ちょっと参考までにみて下さい。

 

 

Excle(エクセル)を様式のフォーマットとして使うのは、実は正しい。

様式だからって、Word(ワード)で表を作る人もいます。

別に否定はしません。

手書きする様式だってありますから。

 

ただ。

僕自身がワードを使い慣れていないこともあり、

よく頑張るなぁ。と思うくらい。

 

枠線を引いて、その枠線の中で文章が収まる様に。

 

なんてワードでやるのは、面倒臭い

 

 

では、なぜ会社は所定の様式を定めているの?

→個別のオリジナル様式だと統一できないから。

 

なぜ統一させるの?

→一覧性が欲しい、整合性が欲しい。

 

じゃあ、なぜデータベース化しないの?

→○印をつけるものだってあるじゃん?

 

 

 

そう。それならVBAだ。

 

オートシェイプを使うと同時に、データベース用に加工してしまえばいいわけです。

 

 

 

スポンサーリンク

VBAで簡単にオートシェイプを利用して業務効率をアップさせよう

VBAでオートシェイプを利用するときの順番

 

1・オートシェイプを付けたときに、データベース用に加工するセルを決める

2・データベースから復元したときに、オートシェイプを指示するセルを決める

3・シートに残った、いらないオートシェイプを削除する

4・新しくオートシェイプをつける

 

やるなら全部VBAでやらないと!な頭でっかちさんは

特に1と2は、脳に刻み込んでね☆

 

前提として

使うシートは「Sheet1」

A1に「OK」、B1に「NG」

データベース用に加工するセルをC1で「空白の状態」

データベースから復元して、オートシェイプを指示するセルをD1で「空白の状態」

 

 

1・オートシェイプを付けたときに、データベース用に加工するセルを決める。

A1「OK」のセルにオートシェイプをしたときに、C1にはOKを入力させる。

B1「NG」のセルにオートシェイプをしたときに、C1にはNGを入力させる。

 

 

2・データベースから復元したときに、オートシェイプを指示するセルを決める

D1セルにOKが入力されると、A1セルにオートシェイプを復元させる。

D1セルにNGが入力されると、B1セルにオートシェイプを復元させる。

 

 

3・シートに残った、いらないオートシェイプを削除する

コピペしてもらってセルの範囲などを変更すると利用できます。

 

Sub 残ったオートシェイプの削除()

Dim sh1 as worksheet

Set  sh1 = thisworkbook.sheet(“sheet1”)

 

Sh1.Activate

Range("C1").Select  ‘ ←オートシェイプを付けたときに、データベース用に加工するセル

Selection.ClearContents

Range("D1").Select ‘←データベースから復元したときに、オートシェイプを指示するセル

Selection.ClearContents

 

Dim 範囲 As Range

Dim myShape As Variant

 

Set 範囲 = Range("A1:B1”) ‘←オートシェイプを付けるセルの範囲

 

For Each myShape In ActiveSheet.Shapes

 

If Not Intersect(Range(myShape.TopLeftCell, myShape.BottomRightCell), 範囲) Is Nothing Then

myShape.Delete

End If

Next

 

End Sub

 

 

4・新しくオートシェイプをつける

これも同じく、コピペすればセルの指定範囲を変更すれば利用できます。

NGの場合は、指定セルの範囲を変更して下さい。

 

Sub OKのオートシェイプを表示()

 

Dim sh1 as worksheet

Set  sh1 = thisworkbook.sheet(“sheet1”)

 

Sh1.Activate

 

Application.ScreenUpdating = False

Application.EnableEvents = False

Application.Calculation = xlCalculationManual

 

Call残ったオートシェイプの削除

 

Range("A1") = "OK"    ←NGはB1セル

With Range("A1:A1")   ←NGはB1セル

ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, .Top, .Width, .Height).Select

Selection.ShapeRange.Fill.Visible = msoFalse

With Selection.ShapeRange.Line

.Visible = msoTrue

.ForeColor.RGB = RGB(0, 0, 0)  ←オートシェイプの色を変えるのここ

.Transparency = 0

End With

End With

Range("C1").Value = "OK"

Range("A1").Activate

 

Application.ScreenUpdating = True

Application.EnableEvents = True

Application.Calculation = xlCalculationAutomatic

 

End Sub

 

 

楽を追及するのが、VBA

さらにこのオートシェイプの表示をさせるのに

ダブルクリックは面倒臭いから、

 

右クリックでオートシェイプが出る様にすると

 

非常に楽。

 

もう一度言います。

 

非常に楽です。

 

 

スポンサーリンク
おすすめの記事