• ベストアンサー

Replace関数 大文字小文字を区別したい

エクセルVBAについて質問いたします。 Sub test23() Dim 文字列 As String 文字列 = "Aa" Debug.Print Replace(文字列, "A", "b") End Sub を実行すると戻り値は、bbなのですが、大文字小文字を認識して置換する方法はありますか? 上記の例で例えるのなら、「A」なら「B」に置換したいので 「a」は、「A」ではないので、置換させたくないのです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 質問のコードは無視します。 >例えるのなら、「A」なら「B」に置換したいので 文字列 ="Aa" Replace(文字列, "A", "B", , , 0) Ba

BVRRCWI
質問者

お礼

Replace 関数のヘルプを見たところ、 ----------------------------------------------------------------------- vbUseCompareOption -1 Option Compare ステートメントの設定を使用して比較を行います。 vbBinaryCompare 0 バイナリ モードで比較を行います。 vbTextCompare 1 テキスト モードで比較を行います。 vbDatabaseCompare 2 Microsoft Access の場合のみ有効。データベースに格納されている設定に基づいて比較を行います。 ----------------------------------------------------------------------- だったので、0を使うのですね。 ご回答ありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

>を実行すると戻り値は、bbなのですが、 戻り値というか、イミディエイトウィンドウに表示される内容のことですよね? そのプログラムだけだと、 ba ですよ。モジュールの前の方で、 Option Compare Text と指定していませんか?その行を削除するか、 Option Compare Binary を指定するか、 Debug.Print Replace(文字列, "A", "b", 1, -1, vbBinaryCompare) としてください。

BVRRCWI
質問者

お礼

失礼しました。 イミティエイドウインドウに表示される値は、baでした。 Option Compare Textはやってません。 Debug.Print Replace(文字列, "A", "b", , , vbBinaryCompare) にしたらうまく行きました。ご回答ありがとうございました。

関連するQ&A

  • ifステートメント 大文字も小文字も区別なく

    Sub test() Dim moji As String moji = "a" If moji = "A" Then MsgBox "Aかaです" End If End Sub これだと、変数が小文字のaだからmsgboxが表示されません。 小文字も大文字も区別なく認識させるにはどうすればいいでしょうか? バイナリモードになってるようです。 Replace関数の場合は、vbTextCompareを付ければ Sub Sample() Dim moji As String moji = "a" Debug.Print Replace(moji, "A", "b", , , vbTextCompare) End Sub このように大文字小文字区別なく置換できますが このような事をifステートメントでやる方法を教えてください。

  • Replace関数について

    Sub macro1() Dim str As String str = "abc" str = Replace(str, "c", "a") MsgBox str End Sub このマクロを実行した時に、問題なく動くのですが なぜReplaceは関数なのに、 WorksheetFunction.がいらないのでしょうか? しかも Sub macro2() Dim str As String str = "abc" str = WorksheetFunction.Replace(str, "c", "a") MsgBox str End Sub にすると、エラーになります。 macro1のReplaceは、関数ではないのでしょうか? メソッドやステートメントですか?

  • REPLACE関数が使えません

    ACCESS2000を使っているのですが、REPLACE関数が使えなくて困っています。 Private Sub 置換_Click()   MSG = Replace("ABC", "A", "B")   MsgBox MSG End Sub こういう単純なもので試してもうまくいきません。 「プロシージャの呼び出し、または引数が不正です」 とのエラーが出てしまいます。 どんな原因が考えられますか?

  • 「ゞ」のみ置換するにはどうすればいいでしょう?

    「ゞ」を置換したいのに、 「ゞ」の次の文字まで置換されてしまう。 Sub test() Dim str会社名 As String str会社名 = "いすゞ自動車" Debug.Print Replace(str会社名, "ゞ", "ず") End Sub を実行すると 「ゞ自」が対象になってしまうのですが、 どうしてでしょうか? 「ゞ」は一文字ですよね? Replaceで「ゞ」のみ置換するにはどうすればいいでしょう?

  • lenは文字数を取得する関数ですよね?

    vbaで Sub test() Dim i As Long Debug.Print Len(i) End Sub とすると、4が返るのですが、なぜなのかまったくわかりません。 iには0が入っているので、一文字だから1が返ると思うのですが・・・

  • select case 大文字小文字を区別しないよ

    select case 大文字小文字を区別しないようにするには? Sub test01() Dim str As String str = "A" Select Case str Case "a" MsgBox "aです" Case "A" MsgBox "aです" End Select End Sub これだと、半角全角がヒットしないのはなんとなくしょうがないかな、と思うのですが 大文字小文字がちがくてもヒットさせるにはどうすればいいですか? Sub test01() Dim str As String str = "A" Select Case str Case "a", "A" MsgBox "aです" End Select End Sub とするしかないでしょうか? 大文字小文字区別なく評価する方法があれば教えてください。よろしくお願いします。

  • ひらがなとカタカナを区別して置換するには?VBA

    カタカナの「ア」があるのなら置換したいので Sub test() Debug.Print Replace("ア111", "ア", "") End Sub としたのですが、これで問題なく置換されるのですが どうやらひらがなの「あ」も上記のコードで置換されるようです。 Debug.Print Replace("あ111", "ア", "") だと、返り値が「111」でした。 ひらがなとカタカナを区別するには小津すればいいでしょうか? Replace("あ111", "ア", "")の返り値は「あ111」がいいです。

  • 文字列aを一文字ずつExcelのセルに入力する方法

    Excel VBAについて確認させてください。 下記のエクセルマクロはエクセルのA列に入力されてある文字を順に読み込んで ユーザが入力したテキストファイル(=FN1)を開いて エクセルのA列に入力されてある文字が見つかった場合は削除する作業を 文字が入力されてある最後の行までループによって行い、 最終的に処理した文字列aを出力ファイル(=FN2)に保存するプログラムです。 このプログラムを改良して文字列aを出力ファイル(=FN2)に保存するのをやめて 文字列aを一文字ずつ、Excelのセルごとに1行ずつ入力するプログラムを作成したいのですが どのようにすればよいかご教授いただけますでしょうか。 以下、プログラム本文です。 ------------------------- Sub sample() Dim a As String Dim y As Long Dim x As String Dim FN1 As String Dim FN2 As String x = InputBox("チェックするファイル名を入力してください。(拡張子も含めてください。)") FN1 = ThisWorkbook.Path & "\" & x FN2 = ThisWorkbook.Path & "\チェック済" & x With CreateObject("Scripting.FileSystemObject").GetFile(FN1).OpenAsTextStream a = .ReadAll For y = 1 To Cells(Rows.Count, 1).End(xlUp).Row a = Replace(a, Cells(y, 1), "") '読み込んだテキストファイルにエクセルのA列にある文字が見つかった場合削除 a = Replace(a, vbCrLf, "") '改行コードの削除 a = Replace(a, vbTab, "") 'タブコードの削除 Next .Close End With With CreateObject("Scripting.FileSystemObject").OpenTextfile(FN2, 2, True) .Write a .Close End With End Sub

  • VBA 複数の文字のコードを一気に返すには

    Sub test1() Dim myStr As String myStr = "abc" Debug.Print Asc("a") Debug.Print Asc(myStr) End Sub このコードは、どちらも97が返るのですが、 myStrは3文字です。 3文字全ての文字コードを返すには、 Sub test2() Dim myStr As String myStr = "abc" Debug.Print Asc(Mid(myStr, 1, 1)) & Asc(Mid(myStr, 2, 1)) & Asc(Mid(myStr, 3, 1)) End Sub のようにするしかないのでしょうか?

  • REPLACE関数 特定の文字を置換したい

    例えば、 A1 あいう-えお A2 あいうえ-お となっていて、 「-」を空白に置換したいのですが、 「-」の位置は、セルによって異なります。 なので、「-」はセルによって何文字目にあるのかわからない状態です。 検索と置換で一発で置換できますが、そうではなく関数で置換する方法を教えてください。 B1で=REPLACE(A1,4,1,"")にして、下へオートフィルすると あいうえお あいう-お と言う結果になってしまいます。