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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
-
4
VBAで配列の計算
Excel(エクセル)
-
5
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
6
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
7
ExcelVBAで質問です。離れた二次元配列を一つにしたい
Visual Basic(VBA)
-
8
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
9
VBA 置換文字がみつからない時
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
for each の現在の配列ポインタ VBA
Excel(エクセル)
-
12
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
15
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
16
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
17
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
18
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
19
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
20
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
【エクセル】 関数による電子...
-
excelの、ある数式内の{}の意...
-
RichTextBoxの改行を認知してく...
-
これ以上省略することは出来な...
-
マイクロリアクターアレー
-
ruby "\\001\\376".unpack("C*"...
-
Rubyで配列を使ったfor文の中に...
-
○桁にある数値を取得する VB.N...
-
配列の値を置換するにはどうす...
-
ファイルの特定行を取り出したい.
-
rubyによる2次元配列形式のデー...
-
MAXIFもどき(エクセル関数)
-
visual basicについて
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
processing エラーで、 "cannot...
-
jsp~jspにhiddenを使って変数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
-
配列の値を置換するにはどうす...
-
初心者プログラミング
-
vbsでテキストファイル内の文字...
-
COLUMN(1:1)の意味を教え...
-
初心者が簡単なPowerShellスク...
-
VBAのWorksheetFunctionの引数...
-
RichTextBoxの改行を認知してく...
-
VBSで特定の文字列が含まれる場...
-
数値を浮動小数点32bitHEXコー...
-
エクセル、この関数の意味は?
-
in_addrからchar型の文字列の変換
-
VBAで配列に文字列が入らない?
-
○桁にある数値を取得する VB.N...
-
VB 配列の内容をファイルに書...
-
【エクセル】 関数による電子...
-
VB6で配列を文字列に変換する方...
-
VB.NET 2つの配列を連動して並...
-
VBAで配列内のマッチ
おすすめ情報