Excelのこととか色々

マクロをどんな Excel ファイルにも実行できるように設定して、3秒かかる操作も1秒で完了。あといろいろ書いてみます・・・

【Excel/VBAのこと43】右から左へ読む言語を扱う(Unichar関数)

   f:id:tuna-kichi:20200223230814p:plain

 

**********************************************

RTL言語(アラビア語などの右から左に読む言語)を取り扱う方法です。

 

右から左の設定

詳細設定から

ファイル > オプション > 詳細設定 > 右から左

に設定すると、行番号、列、シートの表示が左右が逆になります。

オプションの詳細設定

 

 

セルの書式設定から

セルを右クリック > セルの書式設定 > 配置タブ > 文字の方向

で「右から左」 を選択すると、そのセルにRTL文字が入力された場合には、

右から左に記述されますが、英語のみや日本語のみの場合は左から右に表示されます。

 

  セルの書式設定

  表示方向は変わらず

 

 

英語とRTL文字の混在

英語のみやアラビア語のみがセルに入力される場合は、問題ないのですが、

英語と、アラビア語が混在した場合、セルに表示されている順番と、

数式バーに表示されている順番が逆になることがあるので、

どの順番が正しいのかわからなくなってしまいます。

 

  LTRとRTLの混在

 

解決方法

① 翻訳会社 or RTL言語ネイティブに聞く

これが一番正確で、安心な方法です。

正しい語順の一覧表をPDFで入手できればそれを正として比較できます。

 

 

② 制御コードを埋め込む

制御コードについては開発をされている人のほうが詳しいと思います。

私が知っているコードはこれくらい・・・

0x200F(右から左に表示する)

このコードを Excel で使用するには UNICHAR という関数を使用します。

 

しかし、セルの中に =UNICHAR(0x200F)&"مرحبا Excel" と入力しても

=UNICHAR(0*200)&"مرحبا Excel" と修正されてしまい、エラーになってしまいます。

 

0x200F を UNICHAR 関数で使用できる値に変換しなければなりません。

その値は、Unicode Map : Public Unicode Character Map

のようなサイトで検索できます。

英語のサイトですが、コードが一覧化されているので、難しくはありません。

 

0x200F のページを開くと、関連するコードが掲載されています。

Unicode Decimal」 の値が Excel の UNICHAR関数に使用できる値です。

0x200F の場合は 「8027」 です。

 

この値を使用して以下のように入力すると

=UNICHAR(8207)&"مرحبا Excel"

こんな風になります。

  UNICHAR関数

 

このセルを コピー > 値貼り付け すれば、関数が外れてきれいになります。 

関数がなくなっても語順は変わりませんし、

数式バーの表示とも一致します・・・(するはずです)。

  関数外しても順番は変わらず

 

③ マクロ

Sub

 Selection = Replace(Selection, "Excel", WorksheetFunction.Unichar(8207) & "Excel")

End Sub

-------------------------------------------------

Replace 関数を使えば制御コード付を埋め込むことができます。

マクロで埋め込んだ場合は、結果だけ表示されるので、

コピー > 値貼り付け は必要ありません。

大量にある場合にはループで回した方が良いですね。

 

あとは、いつも通りこのマクロをリボンに登録して、

いつでも、どんなファイルにでも使えるようにしておきます。

 

**********************************************

 

個人用マクロブックについてはこちら

www.tuna-kichi.com

 

リボンに登録についてはこちら

www.tuna-kichi.com

 

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/

 

 

 

PVアクセスランキング にほんブログ村 Excelのこととか色々 - にほんブログ村 にほんブログ村 子育てブログ 幼稚園児育児へ にほんブログ村 英語ブログ 初心者英語へ にほんブログ村 IT技術ブログ VBAへ