none
マクロで機種依存文字の置換を行うと、置換されたくない小文字まで大文字に置換される RRS feed

  • 質問

  • Mac版Excel2016のver16以降にて。

    機種依存文字(ローマ数字のⅠやⅡ、㎝など)をアルファベット(IやII、cmなど)に置き換えるマクロを作成して使っているのですが、Mac版Excel ver.16以降で作業すると、小文字の(i)や(v)までも大文字の(I)(V)に変換されてしまい困っております。

    MacOSはSierra、Mojaveともに起こります。

    ちなみにマクロは以下のようなもの。
    (マクロなどプログラムに疎いので間違っている可能性もあります。。。)

    Sub ReplaceString()
    Cells.Replace What:="Ⅰ", Replacement:="I"
    Cells.Replace What:="Ⅱ", Replacement:="II"
    Cells.Replace What:="Ⅲ", Replacement:="III"
    Cells.Replace What:="Ⅳ", Replacement:="IV"
    Cells.Replace What:="Ⅴ", Replacement:="V"
    Cells.Replace What:="㎜", Replacement:="mm"
    Cells.Replace What:="㎝", Replacement:="cm"
    End Sub

    Excelのフォーラムにて質問したところ
    UCase関数で大文字指定にすれば解決するとアドバイスを頂きましたが、どの様に使うかが判りませんでしたので、こちらで改めて質問させて頂きました。

    何卒宜しくお願い申し上げます。


    2019年8月14日 4:27

回答

  • Macを持っていないので確認できませんが、

    Cells.Replace What:="Ⅰ", Replacement:="I", MatchCase:=True

    のようにするとどうでしょうか?

    <追記>ひょっとして、ローマ数字の小文字の "ⅰ" ではなくて、アルファベット小文字の "i" が "I" に置換されるという話でしょうか?

    ローマ数字小文字の "ⅰ"、アルファベット小文字(半角)の "i"、アルファベット小文字(全角)の "i"はすべて異なる文字なので、どの文字が置換されるのかを明確にしていただかないと正しい回答ができないかもしれません。

    • 編集済み Hongliang 2019年8月14日 4:44
    • 回答としてマーク u yao 2019年8月14日 5:41
    2019年8月14日 4:34
  • 小文字の(i)や(v)までも大文字の(I)(V)に変換されてしまい困っております。

    置き換わるのは「小文字の(i)や(v)」ではなく、「小文字の(ⅰ)や(ⅴ)」ではありませんか?

    もしそうなら、MatchCase 引数を指定してみてください。

    Cells.Replace What:="Ⅰ", Replacement:="I", MatchCase:=True

    • 回答としてマーク u yao 2019年8月14日 5:41
    2019年8月14日 4:45

すべての返信

  • Macを持っていないので確認できませんが、

    Cells.Replace What:="Ⅰ", Replacement:="I", MatchCase:=True

    のようにするとどうでしょうか?

    <追記>ひょっとして、ローマ数字の小文字の "ⅰ" ではなくて、アルファベット小文字の "i" が "I" に置換されるという話でしょうか?

    ローマ数字小文字の "ⅰ"、アルファベット小文字(半角)の "i"、アルファベット小文字(全角)の "i"はすべて異なる文字なので、どの文字が置換されるのかを明確にしていただかないと正しい回答ができないかもしれません。

    • 編集済み Hongliang 2019年8月14日 4:44
    • 回答としてマーク u yao 2019年8月14日 5:41
    2019年8月14日 4:34
  • 小文字の(i)や(v)までも大文字の(I)(V)に変換されてしまい困っております。

    置き換わるのは「小文字の(i)や(v)」ではなく、「小文字の(ⅰ)や(ⅴ)」ではありませんか?

    もしそうなら、MatchCase 引数を指定してみてください。

    Cells.Replace What:="Ⅰ", Replacement:="I", MatchCase:=True

    • 回答としてマーク u yao 2019年8月14日 5:41
    2019年8月14日 4:45
  • Hongliang様、並びに魔界の仮面弁士様
    早急なご返答有難うございました。

    お察しの通り、アルファベット小文字のアイ(i)や小文字のヴイ(v)が不用意に置換されるのです。
    例えば「business」が「busIness」になるのです。

    アドバイス通り、MatchCase:=Trueを追加することで、不用意な置換がなくなりました。
    お二方に感謝致します。有難うございました。


    2019年8月14日 5:41