難易度:★☆☆(かんたん)

※当校のExcel VBAコースを補足する内容となっています。


ツリーを描こう

「*」の文字を使って、ツリーを描くプログラムを考えます。
A列の1行目には1つ、2行目には2つ…とひとつずつ表示する「*」の数を増やしていきます。

ツリー

A1セルに「*」、A2セルに「**」…と20回書けばいいんじゃないかな


Sub tree()
    Cells(1, 1) = "*"
    Cells(2, 1) = "**"
    Cells(3, 1) = "***"
   :
  (略)
   :
    Cells(20, 1) = "********************"    
End Sub

たしかに、これも間違いではありません。しかし、100行にわたって書かないといけないときは、どうしますか?

同じような処理を100回書くのは読みやすいコードとは言えません。
もっと簡潔に書く方法を考えてみましょう。

処理手順を考える

まずは、処理手順を考えてみましょう。

これは「フローチャート」または「流れ図」と呼ばれる、どんな順番で、どのような処理で行っていくかを表した図です。このような図にしなくても、ざっくりと箇条書きにするだけでも構いません。

こういうのはいつも考えないといけないの?面倒そう…

最初のうちは、処理の流れを考えてからプログラムを作成したほうが、結果的に無駄のないキレイなプログラムを作ることができますよ。

プログラムを作る

上記の処理手順から、次のようなプログラムを作りました。

①~③には、どんなコードを書けばいいか考えてみましょう。

ヒント:
With Columns(“A”)以降は、A列を中央揃えにして、セルの枠線を非表示する処理です。

フローチャートと見比べながら、考えてみましょう。


Sub tree()

    Dim i As Long
    Const End_Row = 20
    
    For i = 1 To End_Row
        Cells(i, 1) = String(i, "*")
    Next i
    
    With Columns("A")
        .AutoFit
        .HorizontalAlignment = xlCenter
    End With
    ActiveWindow.DisplayGridlines = False
    
End Sub