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での Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-


VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-


VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
-
4

2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
5

VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6

array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
7

エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
8

エクセルvbaで転記したのですが、数字のゼロが消えてしまいます。 ゼロも転記するためにはどうしたらい
Excel(エクセル)
-
9

配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
Visual Basic(VBA)
-
10

Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
11

配列の中の最大値とそのインデックス番号を取得する方法
Visual Basic(VBA)
-
12

VBAで配列の計算
Excel(エクセル)
-
13

複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
14

Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
15

vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
16

読み込みで一行おきに配列に格納
Visual Basic(VBA)
-
17

EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
18

ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
19

エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
20

ExcelのVBAでGoToの代わりに…
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COLUMN(1:1)の意味を教え...
-
エクセル、この関数の意味は?
-
VBAのWorksheetFunctionの引数...
-
excelの、ある数式内の{}の意...
-
複数ディレクトリの監視(VB.NET...
-
RichTextBoxの改行を認知してく...
-
エクセルへのデータの貼付時に...
-
VBSで特定の文字列が含まれる場...
-
VB 配列の内容をファイルに書...
-
数値を浮動小数点32bitHEXコー...
-
○桁にある数値を取得する VB.N...
-
配列の値を置換するにはどうす...
-
VB.NET 2次元配列
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
VB6.0-整数と余りを求める
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
プログラミングで変数と関数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
COLUMN(1:1)の意味を教え...
-
数値を浮動小数点32bitHEXコー...
-
VB6で配列を文字列に変換する方...
-
エクセル、この関数の意味は?
-
○桁にある数値を取得する VB.N...
-
VB 配列の内容をファイルに書...
-
VB.NET 2つの配列を連動して並...
-
RichTextBoxの改行を認知してく...
-
copyRecordsetの数値16桁以上に...
-
エクセルへのデータの貼付時に...
-
VBAで配列に文字列が入らない?
-
VBSで特定の文字列が含まれる場...
-
in_addrからchar型の文字列の変換
-
VB.NET 2次元配列
-
配列要素の演算
-
Win32APIでシリアル通信をする...
おすすめ情報














