エクセルVBAでセル内の文字列を操作して全角文字を半角に一括変換する方法

こんにちは~。「デザインもできるシステムエンジニア」のあつもり(@atumori17)です。今日も「時間クリエーター」としてバシバシ時短に取り組んでます!

前回お伝えした「セル内の文字列に含まれる改行を一括で削除する」に続いて、今回は「全角文字を半角に一括で変換」するテクニックをご紹介します。

エクセルVBAでセル内の文字列に含まれる改行を一括で削除する方法
ワークシートのセル内にある改行を消したいって思ったことありませんか?データを別のアプリケーションに取り込んだり、データベースに登録したりするときに改行が邪魔になることがあります。そんな時に改行を一括で削除できるツールがあったら便利ですよね。

全角を半角への変換はASC関数、半角から全角への変換はJIS関数を使って、ワークシート内でもできるのですが、毎回入力するのは面倒ですよね。というわけで本記事ではVBAを使って別のエクセルファイルでも使える汎用的なプログラムを作っていきます。

全角文字を半角に変換するプログラムの作成

前回使用した改行削除プログラムにボタンを追加する

はじめからユーザーフォームを作って、ワークシートに起動ボタンを配置して・・・という作業は面倒だし効率が悪いので、前回使ったプログラムを再利用します。前回作った「一括変換.xls」を開きます。

UserForm1を開いて新たに「全角→半角」ボタンを追加します。ユーザーフォームやボタンの大きさは見やすいように調整して下さい。

「全角→半角」ボタンをダブルクリックしてコードウィンドウを開きます。「CommandButton2_Click()」の下に以下のコードを貼り付けます。

プログラムコードの解説

重要なポイントに要点を絞って説明していきます。

On Error GoToでキャンセルが押されたときの処理を追加する

前回と同じですがInputBoxを表示させるスクリプトは以下にようになります。

tmp = Application.InputBox(“列を選択して下さい”, “列の選択”, Type:=8).Address

前回の「セル内の文字列に含まれる改行を一括で削除する」ではキャンセルボタンが押されたときの処理を入れていませんでした。ですのでキャンセルを押すと「実行時エラー’424′ オブジェクトが必要です」というエラーメッセージが表示されます。

キャンセルが押されるとInputBoxの返り値に”False”が入ります。しかしここで指定している引数はType=8のRangeオブジェクトなので、Falseという返り値を変数tmpに入れることができません。その結果エラーになります。

そこで以下のようなエラー処理をInputBoxを表示させる前に入れます。

On Error GoTo 変数名

そしてプロシージャの最後に以下のコードを入れます。

変数名:

こうすることでInputBoxでエラーが発生したときに、プロシージャの最後にある変数myError:まで処理をスキップさせることができます。つまりキャンセルが押されたときは処理が何も発生しないということになります。

エラーのスキップを解除する

On Error GotoステートメントでInputBox使用時にエラーがあった場合、スキップするようにしましたが、このままだとInputBoxの処理が終わったあとにエラーが起こった場合でもスキップされてしまいます

On Error Gotoステートメントは記述した場所からプロシージャが終わるまで有効だからです。そのためエラーをスキップさせたい処理が終わったら、On Error Gotoステートメントを解除する必要があります。

解除は以下のように書きます。

On Error GoTo 0

こうすることでOn Error Gotoステートメントが解除され、InputBoxの処理の後にエラーがあった場合、エラーメッセージが表示されるようになります。

StrConv関数で全角文字を半角に変換する

全角文字を半角に文字列変換をする場合は以下のようにStrConv関数を使用します。

strCelldata = StrConv(変換する文字, 変換の種類)

StrConv関数を使えば大文字を小文字にしたり、カタカナをひらがなにしたりできるのでとっても便利ですね~。これらを組み合わせれば今まで手作業で行ってた作業を一気に効率化することができますよ。以下が主な文字列変換の種類です。

vbNarrow 全角文字を半角文字に変換
vbWide 半角文字を全角文字に変換
vbUpperCase 文字列を大文字に変換
vbLowerCase 文字列を小文字に変換
vbKatakana ひらがなをカタカナに変換
vbHiragana カタカナをひらがなに変換

全角から半角に一括変換プログラムの動作確認

ワークシートの起動ボタンを押します。フォームが表示されたら「全角→半角」ボタンを押します。

全角文字を半角文字に変換したい列をクリックします。InputBoxのOKボタンを押します。

全角文字が半角に変換されました。

まとめ

いかがでしたか?今回の内容をまとめます。

  • Inputboxでキャンセルが押された場合のエラー処理を入れる
  • StrConv関数で全角文字を半角に変換できる
  • StrConv関数はひらがなをカタカナにしたりする便利な文字列変換関数

以上おつかれさまでした~。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする