VBA-4 配列の初期化

これまでずっとC言語でプログラミングしてきたので、
文字列 = char型の配列
という認識だったのですが、VBには文字列を扱うString型があります。
つまり、文字列の扱いが違うわけです。


セルから取得した文字列に含まれている、ある文字を別の文字に置換する必要がありました。
置換そのものはReplace関数を使えばいいです。
配列の値の置換
1.
2.
3.
4.
5.
6.
7.
' nは置換対象の文字の数
' chは置換対象の文字の配列
' swは置換する文字の配列
For i = 0 To n
    rename = Replace(name, ch(i), sw(i))
    name = rename
Next l

が、問題は置換する対象の文字が多いこと。
VBAでは配列の初期化に
Dim ar As String = {"a", "b", "c"}
みたいな書き方ができないのです。

でも、Variant型とArray関数を使えば次のように配列の初期化ができます。
正確には、配列を値として持つVariant型の変数、らしいです。
Variant型というのは簡単に言うと、何でも入る変数。
配列の初期化
1.
2.
3.
4.
5.
Sub tes()
    Dim ar As Variant
    ar = Array("a", "b", "c", "d", "e", "f", "g")
    MsgBox UBound(ar)
End Sub

でも、文字列はStringに入れたいです。整数ならIntegerに入れたいです。
始から入れるデータの型はわかっているんだから、その型で宣言したいです。

ちなみに、この方法で初期化した場合、配列の要素の数を表すLengthプロパティは使えないみたいです。
要素数が知りたいときは、添え字の上限を返すUBound関数で取得できます。

そういやあ、宣言のときに指定した数字は要素の添え字の最大値なんですね。
C言語みたいに要素数となるわけじゃあないみたいです。

C
int a(3);
// a(0)~a(2)の3つ


VB
Dim a(3) As Integer
' a(0)~a(3)の4つ

0 件のコメント:

コメントを投稿