VBAで全角・半角を変換する方法【コピペですぐ使えるサンプル付】

豆父ちゃん
結論から言うと、全角・半角を一瞬で変換するVBAを導入すること!です。
今回紹介するVBAを使えば、全角・半角が統一されたキレイな資料をすぐに作成することができるようになります。
「全角・半角を変換する!」と言っても、半角から全角にするのか?全てのテキストを半角にするのか?などいろんな処理が想定されます。今回の記事では、資料作りでよく使われる6つのパターンを紹介します。
- テキスト内の半角数字を抽出
- テキスト内の全角数字を抽出
- 文字列を半角に変換
- 文字列を全角に変換
- 文字列を大文字に変換
- 文字列を小文字に変換
6つのパターンをマスターすれば大概の資料作成業務に対応することができます。

上を目指す人
目次
テキストの全角・半角を変換するVBAとは
下記の動画では、テキストの全角・半角を操作する6種類のVBAの動きについて紹介しています。
手作業でテキストを修正しようとすると手間と時間がかかってしまいますが、VBAを使えば選択した範囲のテキストを一瞬で修正することができます。

上を目指す人
全角・半角を変換するVBAの導入方法
上記の動画で紹介している全角・半角を変換、抽出するVBAの導入方法を紹介します。
記事中に掲載されているサンプルVBAをコピペして使えるようになりので、気になる方は是非試してみて下さい。
全角・半角を変換するVBA導入の流れ
- エクセルでVBAを開く
- ModuleにサンプルVBAを貼り付ける
- ボタンを作成
- 作成したボタンにVBAを設定する
- ボタンでVBAを実行
上記の流れでVBAを導入することができます。画像を使って詳しくご紹介します。
全角・半角の数字を抽出するVBAの導入
今回紹介する数字を抽出するVBAは、A列に入力された文字列の中で、半角の数字だけを判別し、それをB列に表示する。という内容のものです。
サンプルVBAの中身を変更するだけで抽出場所を変更することができます。使いやすいようにアレンジしてみてください。
1.VBAを起動し、サンプルVBAをコピー貼り付けをする
下記の画像のようにサンプルVBA(1.半角数字を抽出するVBA)のコピー貼り付けをしてください。
サンプルVBA(1.半角数字を抽出するVBA)
1 | Sub テスト1() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | Dim moji As String |
4 | For i = 2 To gyo |
5 | moji = Cells(i, 1) |
6 | Cells(i, 2) = test(Range(Cells(i, 1), Cells(i, 1))) |
7 | Next |
8 | End Sub |
サンプルVBA(1-1.半角数字を抽出するVBA)
1 | Function test(r As Range) |
2 | Dim T1 As String |
3 | Dim T2 As String |
4 | For i = 1 To Len(r.Value) |
5 | T1 = Mid(r.Value, i, 1) |
6 | If T1 Like “[0-9]" Then |
7 | T2 = T2 & T1 |
8 | End If |
9 | Next i |
10 | If IsNumeric(T2) Then |
11 | test = T2 |
12 | Else |
13 | test = “半角数字ではない" |
14 | End If |
15 | End Function |
数字を抽出するVBAではFunctionを使用しています。サンプルVBAは(1-1.半角数字を抽出するVBA(Function))を使ってください。
2.ボタンにマクロを登録
今回はボタンを作成し、マクロを登録する!という方法にしています。
これで「半角数字を抽出するVBA」の導入は完了です。
利用するサンプルVBAを「全角数字を抽出するVBA」に変えて同じ手順を行えば、全角数字を抽出するVBAを導入することができます。
全角数字を抽出するVBAのサンプルVBAはこちらです。
サンプルVBA(2.全角数字を抽出するVBA)
1 | Sub テスト2() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | Dim moji As String |
4 | For i = 2 To gyo |
5 | moji = Cells(i, 1) |
6 | Cells(i, 3) = test2(Range(Cells(i, 1), Cells(i, 1))) |
7 | Next |
8 | End Sub |
サンプルVBA(2-1.半角数字を抽出するVBA)
1 | Function test2(r As Range) |
2 | Dim T1 As String |
3 | Dim T2 As String |
4 | For i = 1 To Len(r.Value) |
5 | T1 = Mid(r.Value, i, 1) |
6 | If T1 Like “[0-9]" Then |
7 | T2 = T2 & T1 |
8 | End If |
9 | Next i |
10 | If IsNumeric(T2) Then |
11 | test2 = T2 |
12 | Else |
13 | test2 = “全角数字ではない" |
14 | End If |
15 | End Function |
文字列を半角・全角に変換するVBAの導入方法
今回紹介する文字列を全角・半角に変換するVBAは、指定したセルにあるテキストの文字列を全角もしくは半角に変換する。という内容のものです。
まずは文字列を半角に変換するVBAをご紹介します。
1.VBAを起動し、サンプルVBAをコピー貼り付けをする
下記の画像のようにサンプルVBA(3.文字列を半角に変換するVBA)のコピー貼り付けをしてください。
サンプルVBA(3.文字列を半角に変換するVBA)
1 | Sub テスト3() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | retu = Cells(1, Columns.Count).End(xlToLeft).Column |
4 | Dim moji As String |
5 | For i = 1 To gyo |
6 | For j = 1 To retu |
7 | moji = Cells(i, j) |
8 | Cells(i, j) = StrConv(moji, vbNarrow) |
9 | Next |
10 | Next |
11 | End Sub |
2.ボタンにマクロを登録
これで「文字列を半角に変換するVBA」の導入は完了です。
利用するサンプルVBAを「文字列を全角に変換するVBA」に変えて同じ手順を行えば、文字列を全角に変換するVBAを導入することができます。
文字列を全角に変換するVBAのサンプルはこちら
サンプルVBA(4.文字列を全角に変換するVBA)
1 | Sub テスト4() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | retu = Cells(1, Columns.Count).End(xlToLeft).Column |
4 | Dim moji As String |
5 | For i = 1 To gyo |
6 | For j = 1 To retu |
7 | moji = Cells(i, j) |
8 | Cells(i, j) = StrConv(moji, vbWide) |
9 | Next |
10 | Next |
11 | End Sub |
ほかにも、VBAを使ってアルファベットを大文字または小文字に変換することが可能です。
VBAの導入方法は上記で紹介している「文字列を半角・全角に変換するVBA」と同じ手順です。コピペするサンプルVBAを変更するだけなので挑戦してみてください。
サンプルVBA(5.アルファベットを大文字に変換するVBA)
1 | Sub テスト5() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | retu = Cells(1, Columns.Count).End(xlToLeft).Column |
4 | Dim moji As String |
5 | For i = 1 To gyo |
6 | For j = 1 To retu |
7/td> | moji = Cells(i, j) |
8 | Cells(i, j) = StrConv(moji, vbUpperCase) |
9 | Next |
10 | Next |
11 | End Sub |
サンプルVBA(6.アルファベットを小文字に変換するVBA)
1 | Sub テスト6() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | retu = Cells(1, Columns.Count).End(xlToLeft).Column |
4 | Dim moji As String |
5 | For i = 1 To gyo |
6 | For j = 1 To retu |
7/td> | moji = Cells(i, j) |
8 | Cells(i, j) = StrConv(moji, vbLowerCase) |
9 | Next |
10 | Next |
11 | End Sub |
サンプルVBAを変更するだけでいろんな形でテキストの編集を行うことができます。

上を目指す人
全角・半角を抽出、変換するVBAに使われているプログラム
Functionプロシージャ
Functionプロシージャでは、自分で関数を作ることができます。今回の数字を抽出するVBAではこのFunctionプロシージャを利用し、すっきりとしたVBAにすることができました。
下記の記事ではFunctionプロシージャについて詳しく紹介しています。
テキストから半角の数字を抽出する関数
1 | Function test(r As Range) |
2 | Dim T1 As String |
3 | Dim T2 As String |
4 | For i = 1 To Len(r.Value) |
5 | T1 = Mid(r.Value,i,1) |
6 | If T1 Like “[0-9]" Then |
7 | T2 = T2 & T1 |
8 | End If |
9 | Next i |
10 | If IsNumeric(T2) Then |
11 | test = T2 |
12 | Else |
13 | test = “半角数字ではない" |
14 | End If |
15 | End Function |
結果を変数test入れて、半角数字を抽出するVBAで使用されています。
テキストから全角の数字を抽出する関数
1 | Function test2(r As Range) |
2 | Dim T1 As String |
3 | Dim T2 As String |
4 | For i = 1 To Len(r.Value) |
5 | T1 = Mid(r.Value,i,1) |
6 | If T1 Like “[0-9]" Then |
7 | T2 = T2 & T1 |
8 | End If |
9 | Next i |
10 | If IsNumeric(T2) Then |
11 | test = T2 |
12 | Else |
13 | test = “全角数字ではない" |
14 | End If |
15 | End Function |
結果を変数test2入れて、全角数字を抽出するVBAで使用されています。

上を目指す人
IsNumeric関数
数値か数値以外かを判別するときに使用する関数です。
使い方
IsNumeric(引数)
引数が数値だとTrue、数値以外だとFalseを返す
IsNumericを使ったサンプル
1 | Sub test |
2 | T = 1234 |
3 | If IsNumeric(T) Then |
4 | Msgbox “〇" |
5 | MsgBox"×" |
6 | End If |
7 | End Sub |
変数Tに数字を入れた場合メッセージボックスに〇が表示、変数Tに文字列を入れた場合メッセージボックス×が表示されます。

上を目指す人
StrConv関数
文字列の種類を変換する関数です。
使い方
StrConv(引数【文字列】, 引数【変換の種類】)
文字列を変換の種類によって変換した結果に変更して返す
引数【変換の種類】の一覧
vbwide | 4 | 半角を全角に変換 |
vbNarrow | 8 | 全角を半角に変換 |
vbKatakana | 16 | ひらがなをカタカナに変換 |
vbHiragana | 32 | カタカナをひらがなに変換 |
vbUpperCase | 1 | 大文字に変換 |
vbLowerCase | 2 | 小文字に変換 |
vbProperCase | 3 | 先頭文字を大文字に変換 |
StrConvを使ったサンプル
1 | Sub test() |
2 | moji ="カタカナ" |
3 | Msgbox StrConv( moji , vbHiragana ) |
4 | End Sub |
mojiとvbHiraganaの部分を変えると、StrConvがどのような動きをするか理解できるはずです、簡単なサンプルなのでコピーして使ってみて下さい。
ディスカッション
コメント一覧
まだ、コメントがありません