難易度:★☆☆(かんたん)
※当校の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