VBAで全角半角を変換する方法を解説【6つのサンプル事例を紹介】

疑問がある人
こんな疑問にお答えします。
結論から言うと、全角・半角を変換するマクロを導入する!です。
全角・半角を変換するマクロは以下の作業効率をアップさせることができます。
- テキスト入力が多い作業の効率化
- 英数字が頻繁に使われる文書の作成
- 全角・半角が統一された資料の作成
テキストの全角・半角を気にせず編集作業を進めることができるので、作業スピードが格段にアップ。
入力作業がすべて完了したあとにマクロを実行して全角・半角を揃えれば、
見栄えの良いキレイな資料の完成です。
この記事では、6種類の全角・半角を変換するマクロの導入方法が掲載されています。
- テキスト内の半角数字を抽出
- テキスト内の全角数字を抽出
- 文字列を半角に変換
- 文字列を全角に変換
- 文字列を大文字に変換
- 文字列を小文字に変換
6種類の変換マクロは資料作りでよく利用されます。
あなたの業務内容にあった変換マクロを選んで是非使い方をマスターしてみてください。
テキストの全角・半角を変換するVBAとは
下記の動画では、テキストの全角・半角を操作する6種類のVBAの動きについて紹介しています。
変換マクロを使えば選択した範囲のテキストを一瞬で修正することができます。
変換マクロ導入前は、
「半角に変換したいテキストを選択し「F8キー」を押す」
「全角に変換したいテキストを選択肢「F7キー」を押す」
といった手間のかかる作業を繰り返し行っていましたが、一切不要になります。

上を目指す人
下記のサイトでは、この記事で紹介している「全角・半角を変換するマクロ」が設定されているエクセルファイルをダウンロードすることが可能です。
すぐに「全角・半角を変換するマクロ」を使ってみたい!という方は是非参考にしてみてください。
全角・半角を変換するマクロの導入方法
上記の動画で紹介している「全角・半角を変換するマクロ」の導入方法を紹介します。
6種類のサンプル事例を個別にご紹介していきますが、
下記の「全角・半角を変換するマクロ導入の流れ」は全種類共通の考え方です。
全角・半角を変換するマクロ導入の流れ
- エクセルでVBAを開く
- Moduleにサンプルマクロを貼り付ける
- ボタンを作成
- 作成したボタンにVBAを設定する
- ボタンでVBAを実行
コピペするサンプルマクロを変えるだけで、6種類全ての変換マクロが使えるようになります。
サンプル事例① 半角数字を抽出するマクロ
1つ目のサンプル事例は、
A列に入力された文字列の中で、半角の数字だけを判別しB列に表示する
という内容です。
下記1~4の手順でマクロを導入することができます。
1 . VBAを起動し、サンプルマクロをコピー貼り付けをする
下記の画像のようにサンプルVBAをModule1に貼り付けてください。
2 . 半角数字を抽出するサンプルマクロ
Sub テスト1()
gyo = Cells(Rows.Count, 1).End(xlUp).Row
Dim moji As String
For i = 2 To gyo
moji = Cells(i, 1)
Cells(i, 2) = test(Range(Cells(i, 1), Cells(i, 1)))
Next
End Sub
数字を抽出するVBAではFunctionを使用しています。
下記のサンプルマクロ(Function)をコピーして使ってください。
3 . 半角数字を判別するサンプルマクロ(Function)
Function test(r As Range)
Dim T1 As String
Dim T2 As String
For i = 1 To Len(r.Value)
T1 = Mid(r.Value, i, 1)
If T1 Like "[0-9]" Then
T2 = T2 & T1
End If
Next i
If IsNumeric(T2) Then
test = T2
Else
test = "半角数字ではない"
End If
End Function
サンプルマクロ(Function)は、あらかじめModuleを追加で作成しておいて、
そこ(Module2)に記載することをおすすめします。
「Module2はFunction用」としておけば、あとあとVBAの中身を確認したとき見やすくなる。
4 . ボタンにマクロを登録
今回のマクロ実行方法は、「ボタンにマクロを登録」という方法にしています。
これで、半角数字を抽出するマクロの導入が完了です。
サンプル事例② 全角数字を抽出するマクロ
2つ目のサンプル事例は、
A列に入力された文字列の中で、全角の数字だけを判別しC列に表示する
という内容です。
下記1~4の手順でマクロを導入することができます。
1 . VBAを起動し、サンプルマクロをコピー貼り付けをする
下記の画像のようにサンプルVBAをModule1に貼り付けてください。
2 . 全角数字を抽出するサンプルマクロ
Sub テスト1()
gyo = Cells(Rows.Count, 1).End(xlUp).Row
Dim moji As String
For i = 2 To gyo
moji = Cells(i, 1)
Cells(i, 3) = test2(Range(Cells(i, 1), Cells(i, 1)))
Next
End Sub
数字を抽出するVBAではFunctionを使用しています。
下記のサンプルマクロ(Function)をコピーして使ってください。
3 . 全角数字を判別するサンプルマクロ(Function)
Function test2(r As Range)
Dim T1 As String
Dim T2 As String
For i = 1 To Len(r.Value)
T1 = Mid(r.Value, i, 1)
If T1 Like "[0-9]" Then
T2 = T2 & T1
End If
Next i
If IsNumeric(T2) Then
test2 = T2
Else
test2 = "全角数字ではない"
End If
End Function
こんな感じに、
1つ目のサンプル事例で記載したサンプルマクロ(Function)の下に記載
して問題ありません。
4 . ボタンにマクロを登録
ボタンには、「テスト2」というマクロを登録します。
これで、全角数字を抽出するマクロの導入が完了です。
サンプル事例③ 文字列を半角に変換するマクロ
3つ目のサンプル事例は、
指定するセルにあるテキストの文字列を半角に変換する
という内容です。
下記1~3の手順でマクロを導入することができます。
1 . VBAを起動し、サンプルマクロをコピー貼り付けをする
下記の画像のようにサンプルVBAをModule1に貼り付けてください。
2 . テキストを半角に変換するサンプルマクロ
Sub テスト3()
'''文字列を半角に変換'''
gyo = Cells(Rows.Count, 1).End(xlUp).Row
retu = Cells(1, Columns.Count).End(xlToLeft).Column
Dim moji As String
For i = 1 To gyo
For j = 1 To retu
moji = Cells(i, j)
Cells(i, j) = StrConv(moji, vbNarrow)
Next
Next
End Sub
テキストを半角に変換するマクロには、関数StrConvが使われています。
関数StrConvの使い方は、記事の後半で詳しくご紹介しています。
3 . ボタンにマクロを登録
ボタンには、「テスト3」というマクロを登録します。
これで、テキストを半角に変換するマクロの導入が完了です。
サンプル事例④ 文字列を全角に変換するマクロ
4つ目のサンプル事例は、
指定するセルにあるテキストの文字列を全角に変換する
という内容です。
下記1~3の手順でマクロを導入することができます。
1 . VBAを起動し、サンプルマクロをコピー貼り付けをする
下記の画像のようにサンプルVBAをModule1に貼り付けてください。
2 . テキストを全角に変換するサンプルマクロ
Sub テスト4()
'''文字列を全角に変換'''
gyo = Cells(Rows.Count, 1).End(xlUp).Row
retu = Cells(1, Columns.Count).End(xlToLeft).Column
Dim moji As String
For i = 1 To gyo
For j = 1 To retu
moji = Cells(i, j)
Cells(i, j) = StrConv(moji, vbWide)
Next
Next
End Sub
3 . ボタンにマクロを登録
ボタンには、「テスト4」というマクロを登録します。
これで、テキストを全角に変換するマクロの導入が完了です。
サンプル事例⑤ アルファベットを大文字に変換するマクロ
5つ目のサンプル事例は、
指定するセルにあるアルファベットを大文字に変換する
という内容です。
下記1~3の手順でマクロを導入することができます。
1 . VBAを起動し、サンプルマクロをコピー貼り付けをする
下記の画像のようにサンプルVBAをModule1に貼り付けてください。
2 . アルファベットを大文字に変換するサンプルマクロ
Sub テスト5()
'''文字列を大文字に変換'''
gyo = Cells(Rows.Count, 1).End(xlUp).Row
retu = Cells(1, Columns.Count).End(xlToLeft).Column
Dim moji As String
For i = 1 To gyo
For j = 1 To retu
moji = Cells(i, j)
Cells(i, j) = StrConv(moji, vbUpperCase)
Next
Next
End Sub
3 . ボタンにマクロを登録
ボタンには、「テスト5」というマクロを登録します。
これで、アルファベットを大文字に変換するマクロの導入が完了です。
サンプル事例⑥ アルファベットを小文字に変換するマクロ
6つ目のサンプル事例は、
指定するセルにあるアルファベットを小文字に変換する
という内容です。
下記1~3の手順でマクロを導入することができます。
1 . VBAを起動し、サンプルマクロをコピー貼り付けをする
下記の画像のようにサンプルVBAをModule1に貼り付けてください。
2 . アルファベットを小文字に変換するサンプルマクロ
Sub テスト6()
'''文字列を小文字に変換'''
gyo = Cells(Rows.Count, 1).End(xlUp).Row
retu = Cells(1, Columns.Count).End(xlToLeft).Column
Dim moji As String
For i = 1 To gyo
For j = 1 To retu
moji = Cells(i, j)
Cells(i, j) = StrConv(moji, vbLowerCase)
Next
Next
End Sub
3 . ボタンにマクロを登録
ボタンには、「テスト6」というマクロを登録します。
これで、アルファベットを小文字に変換するマクロの導入が完了です。
全角・半角変換するマクロに使われているVBAの解説
Functionプロシージャの解説
Functionプロシージャは、自分で関数を作ることができるというVBAです。
サンプル事例①とサンプル事例②で設定されている数字を抽出するVBAでは、
このFunctionプロシージャを利用することで全体的にすっきりとしたプログラムになっています。
テキストから半角の数字を抽出する関数
Function test(r As Range)
Dim T1 As String
Dim T2 As String
For i = 1 To Len(r.Value)
T1 = Mid(r.Value, i, 1)
If T1 Like "[0-9]" Then
T2 = T2 & T1
End If
Next i
If IsNumeric(T2) Then
test = T2
Else
test = "半角数字ではない"
End If
End Function
上記の半角数字を抽出するマクロは、
セル内の文字列を1文字ずつ検索し、半角数字(0~9)を変数testに格納する
という意味です。
テキストから全角の数字を抽出する関数
Function test2(r As Range)
Dim T1 As String
Dim T2 As String
For i = 1 To Len(r.Value)
T1 = Mid(r.Value, i, 1)
If T1 Like "[0-9]" Then
T2 = T2 & T1
End If
Next i
If IsNumeric(T2) Then
test2 = T2
Else
test = "全角数字ではない"
End If
End Function
上記の全角数字を抽出するマクロは、
セル内の文字列を1文字ずつ検索し、全角数字(0~9)を変数test2に格納する
という意味です。

上を目指す人
下記の記事では、Functionプロシージャについて詳しく紹介しています。
IsNumeric関数の解説
IsNumeric関数は、数値か数値以外かを判別する関数です。
基本構造
IsNumeric(引数)
引数が数値だとTrue、数値以外だとFalseを返す
IsNumeric関数を使ったサンプル事例
Sub test
T = 1234
If IsNumeric(T) Then
Msgbox "〇"
MsgBox"×"
End If
End Sub
変数Tに数字を入れた場合メッセージボックスに〇が表示され、
変数Tに文字列を入れた場合メッセージボックス×が表示されます。

上を目指す人
StrConv関数の解説
StrConv関数は、文字列の種類を変換するという関数です。
基本構造
StrConv( 引数【 文字列 】, 引数【 変換の種類 】)
文字列を「変換の種類」によって変える
引数【変換の種類】の一覧
vbwide | 4 | 半角を全角に変換 |
vbNarrow | 8 | 全角を半角に変換 |
vbKatakana | 16 | ひらがなをカタカナに変換 |
vbHiragana | 32 | カタカナをひらがなに変換 |
vbUpperCase | 1 | 大文字に変換 |
vbLowerCase | 2 | 小文字に変換 |
vbProperCase | 3 | 先頭文字を大文字に変換 |
StrConv関数を使ったサンプル事例
Sub test()
moji ="カタカナ"
Msgbox StrConv( moji , vbHiragana )
End Sub
3行目の「moji」と「vbHiragana」の部分を変えると、
StrConv関数がどのような動きをするか理解できるはずです。

上を目指す人
VBA初心者が効率化マクロを導入する方法
VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!
このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。
こんな問題を解決する方法がこちら
- マクロの開発を外注に依頼する
- マクロが設定されたエクセルファイルをダウンロードする
- 参考書やネットでVBAスキルを身に付ける
VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。
完成されたマクロを使ってエクセル業務を処理する
↓
作業効率が2倍以上アップ!!
↓
便利すぎて自分でもマクロを設定したいと考え始める
↓
参考書やネットの情報でVBAスキルを身に付ける
↓
マクロ開発を代行できる程のスキルを習得
VBAは
他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
という特徴があります。
毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。
マクロの開発を外注に依頼する
マクロの開発を外注に依頼する導入方法は
VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法
です。
「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」
こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

ガッツポーズの人
デメリットは、費用がかかることだけ。
開発内容、依頼先によってかかる費用は大きく異なります。
私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

疑問がある人
ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。
開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、
費用が安い!スピード納期!!
でやらせてもらっています。
ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。
ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。
マクロが設定されたエクセルファイルをダウンロードする
VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。
たとえば、
A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、
『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。
実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

ガッツポーズの人
『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、
VBA初心者でもマクロを導入できる、費用が安い、
というメリットがあります。
しかし
VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい
というデメリットもあります。

ガッツポーズの人
個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。
今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。
参考書やネットでVBAスキルを身に付ける
先程も紹介しましたが、
VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
プログラミングです。
言い換えると、
情報量が豊富なので自分で勉強できちゃう
ということです。
私のVBAスキルはほとんど独学で身に付けたもので、
考えた処理のほとんどをVBAで表現できるレベルにまで到達した!
と思っています。
私の作ったマクロをプロのプログラマーが見れば、
お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!
と感じるはずです。
でも、
私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?
独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、
業務内容に合ったマクロを開発できるようになれます。
独学でVBAスキルを身に付けるコツは、
エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる
です。
とは言っても、全くの知識0の方は何をすればいいかわからないですよね。
VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。
VBAの知識0の方でもすいすい読み進められる内容になっています。
やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。
実際に私はこの参考書を読んでからVBAの勉強を始めました。

ひらめく人
VBAの魅力を発見した後は、
ひたすら自動化したい処理を実現するコードを書くだけ
です。
【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。
実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると
自然といろんなマクロが作れるようになっているはずです。
VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。
ディスカッション
コメント一覧
まだ、コメントがありません