• ベストアンサー

配列の値を置換するにはどうすればいいでしょう?

http://www.moug.net/tech/exvba/0100022.htm を参考にして配列を含むVBAコードを作成しているのですが 例えば「○」を「●」に置換したい場合、 どうすればいいのでしょう? myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●")) にしたら「型が一致しません」と言うエラーになります。 どなたかご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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 と共用するための改行コードです。

fdshjs
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは >myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●")) 例えば、 myMsg(0) = "区切り文字省略 : " & Replace(Join(myStr), "○", "●") Joinで、先に配列でない文字列にしてから、Replaceします。 >「型が一致しません」と言うエラーになります。 Replace関数の引数に配列や配列変数を指定することはできません。 間違った型の引数を指定していることにたいするメッセージです。 また、 「配列を引数に指定できるVBA関数は、極、限られています。」 明示されてはいませんが、このことを整理して書いているのが、 リンク先の記事だと思います。

fdshjs
質問者

お礼

ありがとうございます。

関連するQ&A