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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) Excel VBA で End Subのところで「型が一致しません」のエラーとなります。 6 2022/07/27 19:58
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Java Java 南京錠 2 2023/02/04 11:46
- Ruby power BI クエリエディター 〇〇を含む文字列置換 1 2022/10/16 17:34
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
-
4
VBAで配列の計算
Excel(エクセル)
-
5
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
6
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
7
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
8
ExcelVBAで質問です。離れた二次元配列を一つにしたい
Visual Basic(VBA)
-
9
VBA 置換文字がみつからない時
Visual Basic(VBA)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
12
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
13
DATE型変数を初期化する方法
Visual Basic(VBA)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
Visual Basic(VBA)
-
16
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
17
split関数で区切り文字がない場合
Visual Basic(VBA)
-
18
for each の現在の配列ポインタ VBA
Excel(エクセル)
-
19
Excel VBA Collection.add で Range型を格納したい
Visual Basic(VBA)
-
20
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
COLUMN(1:1)の意味を教え...
-
copyRecordsetの数値16桁以上に...
-
エクセルへのデータの貼付時に...
-
excelの、ある数式内の{}の意...
-
VB 配列の内容をファイルに書...
-
初心者が簡単なPowerShellスク...
-
rubyによる2次元配列形式のデー...
-
VBAのWorksheetFunctionの引数...
-
vbsでテキストファイル内の文字...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
jsp~jspにhiddenを使って変数...
-
VisualStudio2022でC言語プログ...
-
DataGridView 複数行同時変更...
-
数字の位ごとの値を表示するプ...
-
テキストボックスの値を変数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
エクセルへのデータの貼付時に...
-
初心者が簡単なPowerShellスク...
-
vbsでテキストファイル内の文字...
-
初心者プログラミング
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
COLUMN(1:1)の意味を教え...
-
VBSで特定の文字列が含まれる場...
-
○桁にある数値を取得する VB.N...
-
VBAで配列に文字列が入らない?
-
【エクセル】 関数による電子...
-
VB6で配列を文字列に変換する方...
-
数値を浮動小数点32bitHEXコー...
-
RichTextBoxの改行を認知してく...
-
VB 配列の内容をファイルに書...
-
複数ディレクトリの監視(VB.NET...
-
VB.NET 2次元配列
-
C#の問題です。 文字列型の配列...
おすすめ情報