20170402

VBA (Excel)で、連番を出す

python → VBA

pythonは知っている。Cは、途中で投げた。
そういう経緯の自分が、VBA(Excel)に手を出す。

pythonと同じように使えるようになりたい。
あわよくば、Excelとかwordとかでアニメーションしたい。

Excelの「開発」タブから、VBAができる。

ExcelでVBAが使用できるようにするためには、「開発」タブが必要です。
「開発」タブは、デフォルトで非表示です。
表示するためには、先日の分を参照してください。

「for」構文→「For」構文と、連番

  • pythonを使ったfor繰り返し構文
for i in range(10):
print i

>>> for i in range(10):
… print i

0
1
2
3
4
5
6
7
8
9

forを使えば、繰り返すたびに、インデックス用の変数が変わっていくので、それを参照する分をfor文の中で使えば、ちょっとずつ処理を変えていく事ができる。

上のpythonの例では、print関数の引数に、インデックス用の変数を入れているので、繰り返すたびに、標準出力に表示される内容が変わる。

これをVBAのイミディエイトウィンドウでやる。
繰り返し構文は、何らかのソフトのAPIで画像エクスポート機能があった場合に、連番画像を排出する目的で使う。

  • VBAでFor構文
    Sub test()
    Dim i
    For i = 0 To 9
    Debug. Print i
    Next
    End Sub

0
1
2
3
4
5
6
7
8
9

で、できた。

0 fill(0埋め)のため、formatを使う

Sub test()
Dim i
For i = 0 To 10
a = Format(i, "0000")
Debug.Print a
Next
End Sub

0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010

引数を3倍する関数を作った。

pythonでやると、こうなった。

def Abcd(a):
b = a*3
return b

Abcd(10)

>>> def Abcd(a):
… b = a*3
… return b

>>> Abcd(10)
30
>>>

VBだとこう。

Public Function Abcd(ByVal a As Integer) As Integer
Dim b
b = 3 * a
Abcd = b
End Function

Sub test()
Dim a
a = Abcd(10)
Debug.Print a
End Sub

30

やればやるほど、「pythonすげぇ…」なる。
VBAのまだるっこしさときたら…

戻り値のある関数を作る時には、Returnを使うな

VBAで、関数を作る時、戻り値の指定にReturnは使えない。
「構文エラー」になるから。

戻り値の指定をしたければ

関数名 = 戻り値

とする事が、Returnの代わりになる。
VBでは、Returnが使えるが、VBAではReturnが使えない。

VBとVBAは、文法が似ているだけで、違うものなんだと学習できた。
あと、SubもPublic Functionも、プロシージャと呼ばれる何かなのだと知った。

【VBAの最新記事】
posted by yuchan at 07:00 | Comment(0) | VBA
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: