【エクセルVBA】立方体図形を一発作成!長さ&角度指定するだけ!

 

この記事では、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, Y, Z, theta, rad, 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

VBAで立方体を一発作成した結果

良い感じに作成できていますね。

 

次は、以下のパターンです。

X = 100
Y = 200
Z = 300
theta = 30

VBAで立方体を一発作成した結果

こちらも問題なし!

 

スポンサーリンク

おわりに

というわけで今回は、エクセルVBAをつかって立方体を一発作成する方法をご紹介しました。

資料作成の際などにぜひご活用ください。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました