• ベストアンサー

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

ubkuの回答

  • ubku
  • ベストアンサー率37% (227/608)
回答No.1

手元のExcel2007SP3で試したところひらがなとカタカナは区別されているようです。 すなわち Replace("あ111", "ア", "")の返り値は「あ111」 で、ご希望通りです。 何か誤解されていませんでしょうか? それともバージョンや環境の違い???

TUUUNWMGTVVLL
質問者

お礼

ありがとうございました。

関連するQ&A

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

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

  • 半角の?を全角の?にVBAで置換する方法

    A1に「ありますか?」を入力して、 Sub test1() Range("a1").Value Replace(Range("a1").Value, "?", "?") End Sub なら、ハテナが全角になるのですが Sub test2() Range("a1").Replace What:="?", Replacement:="?", LookAt:=xlPart End Sub だと、??????になってしまいます。 前後のコードの関係で、test2の方法で置換したいのですが、どうすればいいでしょう? Replace関数ではなく、Replaceメソッドで?だけを全角にする方法を教えてください。

  • 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ステートメントでやる方法を教えてください。

  • 【VBA】半角カタカナのみを全角にするには?

    http://bekkoame.okwave.jp/qa8979427.html こちらのページを参考にしたのですが カタカナのみ全角にしたいのですが 平仮名がカタカナになってしまいます。 正規表現と言うのがよくわからないので コピペで使ってますが Sub Sample2() Dim myStr As String Dim Match As Object, Matches As Object Dim CW As String With CreateObject("VBScript.RegExp") .Pattern = "[\uFF61-\uFF9F]+" '---(1) .Global = True myStr = "あああイイイ" If Len(myStr) > 0 Then Set Matches = .Execute(myStr) 'マッチしたすべての文字列を置換 For Each Match In Matches myStr = Replace(myStr, Match.Value, _ StrConv(Match.Value, vbWide)) '---(2) Next Match CW = myStr End If End With End Sub だと「あああ」は平仮名のままなのですが myStr = "のののノノノ" にすると、ひらがなの「ののの」が全角カタカナになってしまいます。 Sub test() Call KanaJisF("あああイイイ") End Sub Function KanaJisF(ByVal sSrc As String) As String Dim sTempW As String Dim sTempN As String Dim i As Long ' ' 全角カナに相当する文字コードを総当たりでループ For i = -31852 To -31936 Step -1 sTempW = Chr(i) ' 全角カナ変数に格納 sTempN = StrConv(sTempW, vbNarrow) ' 半角カナに変換して変数に格納 ' ' 半角カナ各文字が、文字列に含まれている場合、全角カナに置換 If InStr(1, sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, sTempW) Next i ' ' 半角長音、文字列に含まれている場合、全角長音に置換 sTempN = Chr(176) If InStr(sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, "ー") KanaJisF = sSrc End Function こちらのコードは、「あああ」も全角カタカナになりました。 "のののノノノ"も同様です。 平仮名は平仮名のままにしたいのですが そのような方法はありますか?

  • vba 「02」を返したいのですが

    Sub test() Debug.Print Month(Date) End Sub のようなコードの時に 月の表記を02のように2桁で返すにはどうすればいいですか? Debug.Print Format(Month(Date), "mm") これだと、なぜか「01」が返ります。 「02」を返したいのですが、どうすればいいでしょうか?

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

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

  • 検索と置換 vba後、そのまま検索できない

    シートに 2014/1/1 が入力されていて VBAで Sub test() If Not Cells.Find(What:=CDate("2014/1/1"), MatchByte:=False) Is Nothing Then Debug.Print "2014/1/1はあります" End If End Sub を実行すると、"2014/1/1はあります"が返りますが このコードを実行し終わってから、ワークシート画面で検索と置換を開くと、 「1/1/2014」の状態で入っています。 そのまま検索ボタンを押しても、さっきはVBAでは"2014/1/1はあります" だったのに、手作業だと「ありません」になります。 どういうことなのでしょう?

  • Replaceメソッド 完全一致で置換したい

    VBAのReplaceメソッドを完全一致で使う方法はありますか? Excel.Range.Replaceメソッドの方ではなく、 VBA.Strings.Replaceメソッドの方なのですが、 Sub test12() MsgBox Replace("abc", "ab", "") '・・・(1) MsgBox Replace("ab", "ab", "") '・・・(2) End Sub (1)の場合は、置換対象と置換前文字が一致しないから、置換されたくなくて、 (2)の場合は、置換対象と置換前文字が一致する(完全一致)から、置換される・・・ とやりたいのですが、可能でしょうか? Excel.Range.Replaceメソッドなら、LookAt:=xlPartなどで、条件をつけられますが、 VBA.Strings.Replaceの場合、どうすればいいですか?

  • vba 改行 「・・」が置換できない

    シートの文字を取得して、削除したい文字を置換で消そうと思うのですが、 変数に格納した値にマウスカーソルを充てると、「・・」と表示され、置換できません。 ?mystr とすると、 改行が返ります。 mystr = Replace(mystr, Chr(10), "") mystr = Replace(mystr, Chr(13), "") mystr = Replace(mystr, vbCr, "") mystr = Replace(mystr, vbCrLf, "") mystr = Replace(mystr, Chr(10) & Chr(13), "") mystr = Replace(mystr, Chr(10) + Chr(13), "") で置換を試みましたが、全部だめです。 Debug.Print Asc(mystr) とすると、9が返ります。 この文字はどうやったら置換で消せるのでしょうか?

  • ダブルコーテーションを全角に置換するには

    InputBoxで入力した"を、Replace関数で”にしたいのですが、 Replace(str, """", "”")をすると、コンパイルエラーになります。 Sub macro() Dim str As String str = InputBox("文字を入れてください") Debug.Print Replace(str, """", "") End Sub というマクロを作りました。 画像のように、半角のダブルコーテーション「"」を入れたら、 Replace関数で全角のダブルコーテーション「”」に変えるにはどうすればいいでしょうか? 「最初からInputBoxに全角入れればいいやん!」 は、なしにしてください。 ファイル名を作っていて、ダブルコーテーションは全角でないとつけられないのです。