この記事では、VBAを使って以下の画像のように立方体図形を一発作成する方法をご紹介していきます。
基本的には上の画像に示しているX,Y,Zの長さと角度θを指定するだけでOKです。
VBAの実行環境構築
先ほど紹介した立方体はVBAを使って作成していきます。
VBAを使ったことがない方は、まずは以下の記事を参考にVBAの実行環境を構築しましょう。
エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説
環境構築ができたら以降で紹介するコードを張り付けて実行するだけです!
立方体を作成するVBAコード
それでは早速ですが、以下が立方体を作成するサンプルコードです。
Sub make_cube()
Dim data_range(8, 3) As Variant
Dim i As Integer
Dim X As Single, Y As Single, Z As Single
Dim theta As Single, rad As Single, margin As Single
'立方体の大きさ、配置指定
X = 100
Y = 200
Z = 300
theta = 30
margin = 50
rad = WorksheetFunction.Radians(theta)
'描写用データの構築
For i = 0 To 2
data_range(i, 0) = 0
data_range(i, 1) = Y * Sin(rad)
data_range(i + 3, 0) = X
data_range(i + 3, 1) = Z + Y * Sin(rad)
data_range(i + 6, 0) = X + Y * Cos(rad)
data_range(i + 6, 1) = 0
Next
For i = 0 To 2
data_range(i * 3, 2) = Abs(data_range(i * 3, 0) - X)
data_range(i * 3, 3) = data_range(i * 3, 1)
data_range(i * 3 + 1, 2) = data_range(i * 3 + 1, 0)
data_range(i * 3 + 1, 3) = data_range(i * 3 + 1, 1) + (-1) ^ (i + 2) * Z
If i <> 2 Then
data_range(i * 3 + 2, 2) = data_range(i * 3 + 2, 0) + Y * Cos(rad)
data_range(i * 3 + 2, 3) = data_range(i * 3 + 2, 1) - Y * Sin(rad)
Else
data_range(i * 3 + 2, 2) = data_range(i * 3 + 2, 0) - Y * Cos(rad)
data_range(i * 3 + 2, 3) = data_range(i * 3 + 2, 1) + Y * Sin(rad)
End If
Next
'立方体描写開始
For i = 0 To 8
'ActiveSheet.Shapes.AddConnector(msoConnectorStraight, X1, Y1, X2, Y2).Select
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _
data_range(i, 0) + margin, data_range(i, 1) + margin, data_range(i, 2) + margin, data_range(i, 3) + margin).Select
Selection.ShapeRange.ShapeStyle = msoLineStylePreset1
With Selection.ShapeRange.Line
.Visible = msoTrue
.Weight = 3
End With
Next
End Sub
基本的には7~10行目のX,Y,Z,thetaをあなたの好きなように調整して実行するだけです。
サンプルコードの内容解説
先ほどのコード内でやっていることを簡単に紹介しておきます。
まず、立方体を作成するには、以下の画像のように3つの点からそれぞれ横、縦、斜めに決まった長さの線を出してあげればOKですよね。
VBAで線を描写するには、
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, X1, Y1, X2, Y2).Select
というコードを用いて、エクセルシート上におけるX座標とY座標(始点、終点それぞれ)を指定してあげる必要があります。
先ほどのコードでは、1回目のFor i = 0 to 2 で始点をX,Y座標を算出し、2回目のFor i = 0 to 2 で終点をX,Y座標を算出しています。
これらの処理によって算出したデータを用いて、9本の線図形をひとつひとつ描写していっている、という処理を行っています。
(なんとなくもう少しスマートなやり方がある気はしますが・・・)
サンプルコードの実行結果
最後に先ほどのサンプルコードを長さや角度を変えながら実行してみましょう。
まずは、以下のパターンです。
X = 300
Y = 100
Z = 200
theta = 60
良い感じに作成できていますね。
次は、以下のパターンです。
X = 100
Y = 200
Z = 300
theta = 30
こちらも問題なし!
おわりに
というわけで今回は、エクセルVBAをつかって立方体を一発作成する方法をご紹介しました。
資料作成の際などにぜひご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント