- ベストアンサー
配列の値を置換するにはどうすればいいでしょう?
http://www.moug.net/tech/exvba/0100022.htm を参考にして配列を含むVBAコードを作成しているのですが 例えば「○」を「●」に置換したい場合、 どうすればいいのでしょう? myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●")) にしたら「型が一致しません」と言うエラーになります。 どなたかご教授よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 あまり、VBAの学習中は、脱線をしないほうがよいです。ごちゃごちゃになってしまいます。 Join関数というものも、そんなに使うわけではありませんから、あえて、置換をするなら、以下のような書き方にします。 それと、Excel自体は、表の中は、2次元配列になりますが、Join 関数も、Filter 関数も、これらは、1次元配列になりますので、Excelでは、そのまま使うことができません。Join で、配列を結合して、その後に、Replace で置換しても、今回は間違いはありませんが、配列は配列のままに使うのがよいです。 Sub RepalceArrayItem() Dim myStr(3) As String Dim i As Integer myStr(0) = "○×市立" myStr(1) = "△□小学校" myStr(2) = "3年" myStr(3) = "2組" For i = LBound(myStr()) To UBound(myStr()) myStr(i) = Replace(myStr(i), "○", "●") Next i MsgBox Join(myStr(), vbNewLine) End Sub 配列変数の添え字の下限と上限は、LBound UBound という関数を使って取ります。 vbNewLine は、Mac と共用するための改行コードです。
その他の回答 (1)
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは >myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●")) 例えば、 myMsg(0) = "区切り文字省略 : " & Replace(Join(myStr), "○", "●") Joinで、先に配列でない文字列にしてから、Replaceします。 >「型が一致しません」と言うエラーになります。 Replace関数の引数に配列や配列変数を指定することはできません。 間違った型の引数を指定していることにたいするメッセージです。 また、 「配列を引数に指定できるVBA関数は、極、限られています。」 明示されてはいませんが、このことを整理して書いているのが、 リンク先の記事だと思います。
お礼
ありがとうございます。
お礼
ありがとうございます。