これまでずっと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つ