
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)
-
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
-
4
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
5
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
8
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
9
配列の中の最大値とそのインデックス番号を取得する方法
Visual Basic(VBA)
-
10
VBAで配列の計算
Excel(エクセル)
-
11
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
12
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
13
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
14
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
15
VBA:日付を配列に入れ別セルに転記するとデータ型が変わる
Visual Basic(VBA)
-
16
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
19
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
20
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのWorksheetFunctionの引数...
-
丸いアイコンを丸く並る方法
-
配列の値を置換するにはどうす...
-
Ruby初心者です。
-
COLUMN(1:1)の意味を教え...
-
Array.newが必要ないのはなぜで...
-
Delphiの型変換について
-
VB 配列の内容をファイルに書...
-
Win32APIでシリアル通信をする...
-
エクセルへのデータの貼付時に...
-
C言語 exitの使い方
-
VisualStudio2022でC言語プログ...
-
Excel-vba 文字列と変数を...
-
<a href=…>がうまくいかない
-
数字の位ごとの値を表示するプ...
-
Windows11のカメラで動画を撮り...
-
エラーの意味は? Lvalue req...
-
Windows Media Playerで動画を...
-
アルゴリズムのトレースについて
-
足して100になるような乱数のア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
COLUMN(1:1)の意味を教え...
-
数値を浮動小数点32bitHEXコー...
-
エクセルへのデータの貼付時に...
-
○桁にある数値を取得する VB.N...
-
VB6で配列を文字列に変換する方...
-
VBAで配列に文字列が入らない?
-
RichTextBoxの改行を認知してく...
-
copyRecordsetの数値16桁以上に...
-
【エクセル】 関数による電子...
-
複数ディレクトリの監視(VB.NET...
-
VBSで特定の文字列が含まれる場...
-
VB.NET 2つの配列を連動して並...
-
Javaのプログラムをルビー言語に。
-
VB 配列の内容をファイルに書...
-
ruby on railsのscaffoldで配列...
おすすめ情報