アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://www.moug.net/tech/exvba/0100022.htm
を参考にして配列を含むVBAコードを作成しているのですが
例えば「○」を「●」に置換したい場合、
どうすればいいのでしょう?

myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●"))

にしたら「型が一致しません」と言うエラーになります。
どなたかご教授よろしくお願いします。

A 回答 (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 と共用するための改行コードです。
    • good
    • 2
この回答へのお礼

ありがとうございます。

お礼日時:2009/04/29 21:04

こんにちは



>myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●"))
例えば、
myMsg(0) = "区切り文字省略 : " & Replace(Join(myStr), "○", "●")
Joinで、先に配列でない文字列にしてから、Replaceします。

>「型が一致しません」と言うエラーになります。
Replace関数の引数に配列や配列変数を指定することはできません。
間違った型の引数を指定していることにたいするメッセージです。
また、
「配列を引数に指定できるVBA関数は、極、限られています。」
明示されてはいませんが、このことを整理して書いているのが、
リンク先の記事だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/04/29 21:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A