大体でIT
大体でIT
Excel VBAで、オートシェイプの位置や背景色の取得と設定について、ご紹介します。オートシェイプの位置は背景色を、取得したい設定するには、LeftやTop、Fill、Lineを使います。よく使うオートシェイプの操作について、VBAコードをまとめました。オートシェイプの扱いに慣れていきましょう。
この記事では、オートシェイプの位置や背景色の、取得と設定について、ご紹介します。
オートシェイプをVBAで操作する場合は、既にあるオートシェイプから背景色や位置を取得して、設定したりします。
基本的な取得と設定のやり方がわかっていると、VBAでオートシェイプの操作を自動化できます。
マニアックなところは、マクロの記録でVBAコードを調べて、細かい操作もできるようにしていきましょう。
では、オートシェイプの位置や背景色の、取得と設定について、解説していきます。
- オートシェイプの位置や背景色を設定する方法
- オートシェイプの位置や背景色を取得する方法
オートシェイプの位置や背景色の設定と、取得するVBAコードをまとめました。
With ActiveSheet.Shapes("正方形/長方形 1")
.Left = Range("C5").Left '左の位置を設定
.Top = Range("C5").Top '上の位置を設定
.Width = 10 '横幅を設定
.Height = 10 '高さを設定
.AutoSize = True '自動調整にする
.ScaleWidth 1.1, msoFalse, 0 '横方向に拡大/縮小(左を基準)
.ScaleWidth 1.1, msoFalse, 1 '横方向に拡大/縮小(中央を基準)
.ScaleWidth 1.1, msoFalse, 2 '横方向に拡大/縮小(右を基準)
.ScaleHeight 1.1, msoFalse, 0 '縦方向に拡大/縮小(左を基準)
.ScaleHeight 1.1, msoFalse, 1 '縦方向に拡大/縮小(中央を基準)
.ScaleHeight 1.1, msoFalse, 2 '縦方向に拡大/縮小(右を基準)
.AutoShapeType = 1 'タイプを設定
.Fill.ForeColor.RGB = RGB(255, 0, 0) '背景色を設定
.Fill.Transparency = 0 '透過率を設定(0:透過なし、1:背景色なし)
.Line.ForeColor.RGB = RGB(255, 255, 0) '枠線の色を設定
End With
With ActiveSheet.Shapes("正方形/長方形 1")
a = .Left '左の位置を取得
a = .Top '上の位置を取得
a = .Width '横幅を取得
a = .Height '高さを取得
a = .AutoShapeType 'タイプを取得
a = .Fill.ForeColor.RGB '背景色を取得
a = .Fill.Transparency '透過率を取得
a = .Line.ForeColor.RGB '枠線の色を取得
a = .TopLeftCell.Address '左上の位置を取得
a = .BottomRightCell.Address '右下の位置を取得
End With
VBAで、オートシェイプの位置や背景色を設定する、VBAコードを解説していきます。
オートシェイプの左の位置を「セルD5の左の位置」に設定します。
Sub TEST1()
'左の位置を設定
ActiveSheet.Shapes("正方形/長方形 1").Left = Range("D5").Left
End Sub
オートシェイプを用意
「左の位置」を設定
オートシェイプの上の位置を「セルD5の上の位置」に設定します。
Sub TEST2()
'上の位置を設定
ActiveSheet.Shapes("正方形/長方形 1").Top = Range("D5").Top
End Sub
オートシェイプを用意
「上の位置」を設定
Sub TEST3()
'幅を設定
ActiveSheet.Shapes("正方形/長方形 1").Width = 200
End Sub
オートシェイプを用意
「幅」を設定
オートシェイプの幅が、「200」pxに変更されました。
Sub TEST4()
'高さを設定
ActiveSheet.Shapes("正方形/長方形 1").Height = 200
End Sub
オートシェイプを用意
「高さ」を設定
オートシェイプの高さが、「200」pxに変更されました。
「テキストに合わせて図形のサイズを調整する」というやつです。
Sub TEST5()
'サイズを自動調整
ActiveSheet.Shapes("正方形/長方形 1").TextFrame.AutoSize = 1
End Sub
オートシェイプを用意
サイズを「自動調整」にする
3つ目の引数を変更すると、拡大する基準を設定できます。
左を基準に拡大
Sub TEST6()
'幅を拡大/縮小する(左を基準)
ActiveSheet.Shapes("正方形/長方形 1").ScaleWidth 1.5, msoFalse, 0
End Sub
中央を基準に拡大
Sub TEST7()
'幅を拡大/縮小する(中央を基準)
ActiveSheet.Shapes("正方形/長方形 1").ScaleWidth 1.5, msoFalse, 1 '中央を基準
End Sub
右を基準に拡大
Sub TEST8()
'幅を拡大/縮小する(右を基準)
ActiveSheet.Shapes("正方形/長方形 1").ScaleWidth 1.5, msoFalse, 2 '右を基準
End Sub
3つ目の引数を変更すると、拡大する基準を設定できます。
上を基準に拡大
Sub TEST9()
'高さを拡大/縮小する(上を基準)
ActiveSheet.Shapes("正方形/長方形 1").ScaleHeight 1.5, msoFalse, 0 '上を基準
End Sub
中央を基準に拡大
Sub TEST10()
'高さを拡大/縮小する(中央を基準)
ActiveSheet.Shapes("正方形/長方形 1").ScaleHeight 1.5, msoFalse, 1 '中央を基準
End Sub
下を基準に拡大
Sub TEST11()
'高さを拡大/縮小する(下を基準)
ActiveSheet.Shapes("正方形/長方形 1").ScaleHeight 1.5, msoFalse, 2 '下を基準
End Sub
オートシェイプのタイプを設定(AutoShapeType)
Sub TEST12()
'タイプを設定
ActiveSheet.Shapes("正方形/長方形 1").AutoShapeType = 3
End Sub
オートシェイプを用意
「タイプ」を設定
他の、オートシェイプの番号は、「マクロ記録」で調べるといいです。
背景色を設定(Fill.ForeColor.RGB)
Sub TEST13()
'背景色を設定
ActiveSheet.Shapes("正方形/長方形 1").Fill.ForeColor.RGB = RGB(255, 255, 0)
End Sub
オートシェイプを用意
「背景色」を設定
透過率を設定(Fill.Transparency)
Sub TEST14()
'透過率を設定
ActiveSheet.Shapes("正方形/長方形 1").Fill.Transparency = 0.5
End Sub
「0」が、透過なしで、「1」が完全に透過して、背景色なしになります。
オートシェイプを用意
「透過率」を設定
枠線の色を設定(Line.ForeColor.RGB)
Sub TEST15()
'枠線の色を設定
ActiveSheet.Shapes("正方形/長方形 1").Line.ForeColor.RGB = RGB(255, 255, 0)
End Sub
オートシェイプを用意
「枠線の色」を設定
という感じで、オートシェイプを設定することができます。
この辺がわかれば、オートシェイプで、大体の設定はできます。
次は、オートシェイプの値を、取得する方法を、解説します。
基本的には、先ほどの設定を、変数に入れるなりすると、取得することができます。
それ以外にも、オートシェイプのセルの位置など、取得だけのパターンもありますので、解説していきます。
オートシェイプの「左の位置」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST16()
'左の位置を取得
a = ActiveSheet.Shapes("正方形/長方形 1").Left
'左の位置を設定
ActiveSheet.Shapes("正方形/長方形 2").Left = a
End Sub
2つのオートシェイプを用意
「左の位置」を取得して設定
オートシェイプの「上の位置」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST17()
'上の位置を取得
a = ActiveSheet.Shapes("正方形/長方形 1").Top
'上の位置を設定
ActiveSheet.Shapes("正方形/長方形 2").Top = a
End Sub
2つのオートシェイプを用意
「上の位置」を取得して設定
オートシェイプの「幅」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST18()
'幅を取得
a = ActiveSheet.Shapes("正方形/長方形 1").Width
'幅を設定
ActiveSheet.Shapes("正方形/長方形 2").Width = a
End Sub
2つのオートシェイプを用意
「幅」を取得して設定
オートシェイプの「高さ」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST19()
'高さを取得
a = ActiveSheet.Shapes("正方形/長方形 1").Height
'高さを設定
ActiveSheet.Shapes("正方形/長方形 2").Height = a
End Sub
2つのオートシェイプを用意
「高さ」を取得して設定
オートシェイプのタイプを取得(AutoShapeType)
オートシェイプの「タイプ」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST20()
'タイプを取得
a = ActiveSheet.Shapes("正方形/長方形 1").AutoShapeType
'タイプを設定
ActiveSheet.Shapes("正方形/長方形 2").AutoShapeType = a
End Sub
2つのオートシェイプを用意
「タイプ」を取得して設定
背景色を取得(Fill.ForeColor.RGB)
オートシェイプの「背景色」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST21()
'背景色を取得
a = ActiveSheet.Shapes("正方形/長方形 1").Fill.ForeColor.RGB
'背景色を設定
ActiveSheet.Shapes("正方形/長方形 2").Fill.ForeColor.RGB = a
End Sub
2つのオートシェイプを用意
「背景色」を取得して設定
透過率を取得(Fill.Transparency)
オートシェイプの「透過率」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST22()
'透過率を取得
a = ActiveSheet.Shapes("正方形/長方形 1").Fill.Transparency
'透過率を設定
ActiveSheet.Shapes("正方形/長方形 2").Fill.Transparency = a
End Sub
2つのオートシェイプを用意
「透過率」を取得して設定
枠線の色を取得(Line.ForeColor.RGB)
オートシェイプの「枠線の色」を取得して、別のオートシェイプに設定してみます。
「正方形/長方形 1」から取得して、「正方形/長方形 2」に設定します。
Sub TEST23()
'枠線の色を取得
a = ActiveSheet.Shapes("正方形/長方形 1").Line.ForeColor.RGB
'枠線の色を設定
ActiveSheet.Shapes("正方形/長方形 2").Line.ForeColor.RGB = a
End Sub
2つのオートシェイプを用意
「枠線の色」を取得して設定
オートシェイプの「枠線の色」を取得できていきます。
オートシェイプの位置を取得するのに使える、便利なVBAコードです。
Sub TEST24()
'左上のセルのアドレスを取得
a = ActiveSheet.Shapes("正方形/長方形 1").TopLeftCell.Address
Debug.Print a
End Sub
オートシェイプを用意
「左上のセル」のアドレスを取得
「左上のセル」はこれ↓
オートシェイプの左上のセルで、アドレスは、「B2」なので、合っていますね。
右下のセルを取得(BottomRightCell)
次は、オートシェイプの「右下のセル」を取得してみます。
Sub TEST25()
'右下のセルのアドレスを取得
a = ActiveSheet.Shapes("正方形/長方形 1").BottomRightCell.Address
Debug.Print a
End Sub
オートシェイプを用意
「右下のセル」のアドレスを取得
「右下のセル」はこれ↓
オートシェイプの右下のセルで、アドレスは、「C5」なので、合っていますね。
こんな感じで、オートシェイプの値を取得することができます。
値を取得して、別のオートシェイプに貼り付けする、という使い方が多いですね。
オートシェイプの設定と取得に、慣れていきましょう。
この記事では、オートシェイプの位置や背景色の、取得と設定について、ご紹介しました。
オートシェイプをVBAで操作する場合は、既にあるオートシェイプから背景色や位置を取得して、設定したりします。
基本的な取得と設定のやり方がわかっていると、十分に、VBAでオートシェイプの操作を自動化できるようになります。
マニアックなところは、マクロの記録でVBAコードを調べて、細かい操作もできるようにしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。