
http://www.moug.net/tech/exvba/0100022.htm
を参考にして配列を含むVBAコードを作成しているのですが
例えば「○」を「●」に置換したい場合、
どうすればいいのでしょう?
myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●"))
にしたら「型が一致しません」と言うエラーになります。
どなたかご教授よろしくお願いします。
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 と共用するための改行コードです。
No.1
- 回答日時:
こんにちは
>myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●"))
例えば、
myMsg(0) = "区切り文字省略 : " & Replace(Join(myStr), "○", "●")
Joinで、先に配列でない文字列にしてから、Replaceします。
>「型が一致しません」と言うエラーになります。
Replace関数の引数に配列や配列変数を指定することはできません。
間違った型の引数を指定していることにたいするメッセージです。
また、
「配列を引数に指定できるVBA関数は、極、限られています。」
明示されてはいませんが、このことを整理して書いているのが、
リンク先の記事だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
-
4
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
5
2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
6
VBAで配列の計算
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
9
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
10
配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
Visual Basic(VBA)
-
11
VBA 置換文字がみつからない時
Visual Basic(VBA)
-
12
エクセルvbaで転記したのですが、数字のゼロが消えてしまいます。 ゼロも転記するためにはどうしたらい
Excel(エクセル)
-
13
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
14
読み込みで一行おきに配列に格納
Visual Basic(VBA)
-
15
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
16
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
17
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
18
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
19
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
20
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのWorksheetFunctionの引数...
-
excelの、ある数式内の{}の意...
-
エクセル、この関数の意味は?
-
vbsでテキストファイル内の文字...
-
COLUMN(1:1)の意味を教え...
-
C#の問題です。 文字列型の配列...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
フォームを開くときに、コンボ...
-
C#で動的にコントロールを取得...
-
VBAで配列のNULL判定
-
エラーの意味は? Lvalue req...
-
Excel-vba 文字列と変数を...
-
テキストボックスの値を変数に...
-
VisualStudio2022でC言語プログ...
-
アンダーバーとバックスラッシュ
-
Windows11のカメラで動画を撮り...
-
processing エラーで、 "cannot...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
COLUMN(1:1)の意味を教え...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
RichTextBoxの改行を認知してく...
-
vbsでテキストファイル内の文字...
-
○桁にある数値を取得する VB.N...
-
複数ディレクトリの監視(VB.NET...
-
エクセルへのデータの貼付時に...
-
数値を浮動小数点32bitHEXコー...
-
VBSで特定の文字列が含まれる場...
-
【エクセル】 関数による電子...
-
VB 配列の内容をファイルに書...
-
小数点の表示。
-
VBAで配列に文字列が入らない?
-
in_addrからchar型の文字列の変換
-
配列の座標指定について。
-
ループを違う条件で抜けるよう...
-
初心者プログラミング
おすすめ情報