2024年1月26日【ID:0】
メンバー限定
【ExcelVBA】半角文字を自動で全角文字に変換
住所を入力する項目などに、以下のように全角文字と半角文字が混ざって入力されていることがあります。
このように、全角文字と半角文字が混ざっている状態は、以下のような問題点があります。
・一貫性がない:データを確認する際の誤解が生じる可能性がある
・データ処理が行いづらい:検索や並べ替え時に想定通りに出来なかったり、重複した内容を認識するのが大変になることがある
・外部システムとの互換性:システムによっては、全角文字のみしか入力を許可していないケースがあるため、そのままの貼り付けで入力ができなくなる
他にも、色んな理由が考えられますが、データを管理する場合は、ルールを統一して管理した方が良いです。
ただ、表を扱う全員が同じ認識でないと、ルールが守られない可能性があります。
ということで、こちらでは、入力した文字を強制的に全角文字に変換する方法について解説していきます。
※こちらで使用したファイルは、記事の最後にて配布しています。
こちらでは、VBAを活用して実現していきます。
特定のシートのセルに入力したタイミングに、自動で処理を行う場合は、シートモジュールを活用します。
まず初めに、[開発]タブの中の[Visual Basic]を選択します。
以下の画面が表示されましたら、該当するシートをダブルクリックし、表示された画面の上のリストから[Worksheet]を選択します。
次に、右側のリストから[Change]を選択します。
※「Option Explicit」が表示されていなくても問題ございません。
選択後に表示される[Worksheets_Change]というプロシージャを活用して実現していきます。
このプロシージャは、該当するシート上のセルを編集した後に実行される特殊なプロシージャ(イベントプロシージャ)になります。
引数の[Target]に、編集されたセルの情報が格納され、実行されます。
まず以下のように入力します。
こちらの内容は、「編集したセルの値を全角文字に置換して、自身のセルに上書きする」という処理になっています。
「StrConv」という関数が、指定した文字を指定した形式に置換した値を返すというものになります。
「Target」に編集したセルの情報が格納されるため、「Target.Value」というのは、そのセルの中に入力されている値を指します。
「vbWide」というのが、「全角文字に変換する」という設定になります。
プログラムの世界の「=」は、一般的に、「右辺の値を左辺に代入する」という意味になります。
そのため、こちらの内容は、全角文字に置換された値を自身のセルに上書きしていることを意味します。
これだけで、セルに入力した値を自動で全角文字に置換することができます。
ただ、この内容ですと問題点があります。
それは、住所の項目以外でも適用されてしまう点と、複数のセルをコピペした場合など、複数のセルに同時に値を入力した場合にエラーになってしまう点です。
そのため、その問題点を解決する必要があります。
解決するには、以下のように修正します。
続きはIT予備メンバー限定です。
メンバー限定コンテンツになります。
IT予備メンバーページと連携することで内容を確認することができます。
メンバーとは
すでにメンバーの方は、
ログインして連携してから、こちらを更新すると閲覧できます。
※連携しても確認ができない場合は、少し時間を置いてご確認ください。
ログイン(新しいタブ)
※[ログイン]→[設定]→[IT予備-連携]で連携できます