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

Left Caption

豆父ちゃん

文章を作成するとき、数字の全角と半角がバラバラだと見栄えが悪い。自動で統一する方法ってないの?

結論から言うと、全角・半角を一瞬で変換するVBAを導入すること!です。

今回紹介するVBAを使えば、全角・半角が統一されたキレイな資料をすぐに作成することができるようになります。

「全角・半角を変換する!」と言っても、半角から全角にするのか?全てのテキストを半角にするのか?などいろんな処理が想定されます。今回の記事では、資料作りでよく使われる6つのパターンを紹介します。

 

  1. テキスト内の半角数字を抽出
  2. テキスト内の全角数字を抽出
  3. 文字列を半角に変換
  4. 文字列を全角に変換
  5. 文字列を大文字に変換
  6. 文字列を小文字に変換

6つのパターンをマスターすれば大概の資料作成業務に対応することができます。

 

Left Caption

上を目指す人

私はこの記事で紹介している全角・半角変換VBAを使ってからテキストの入力ミスが減り資料作成にかかる時間を大幅に短縮することができるようになりました。

 

テキストの全角・半角を変換するVBAとは

下記の動画では、テキストの全角・半角を操作する6種類のVBAの動きについて紹介しています。

手作業でテキストを修正しようとすると手間と時間がかかってしまいますが、VBAを使えば選択した範囲のテキストを一瞬で修正することができます。

 

Left Caption

上を目指す人

エクセルで文章を編集する作業や文章の多い書類作成にピッタリのVBAです。

 

全角・半角を変換するVBAの導入方法

上記の動画で紹介している全角・半角を変換、抽出するVBAの導入方法を紹介します。

 

記事中に掲載されているサンプルVBAをコピペして使えるようになりので、気になる方は是非試してみて下さい。

 

全角・半角を変換するVBA導入の流れ

 

  1. エクセルでVBAを開く
  2. ModuleにサンプルVBAを貼り付ける
  3. ボタンを作成
  4. 作成したボタンにVBAを設定する
  5. ボタンで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を変更するだけでいろんな形でテキストの編集を行うことができます。

 

Left Caption

上を目指す人

エクセルでテキストの編集作業が多いという方は是非サンプルマクロをコピーして使ってみてください。

 

 

全角・半角を抽出、変換する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で使用されています。

 

Left Caption

上を目指す人

Functionプロシージャ数字を抽出する変数を作るプログラムはいろんな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に文字列を入れた場合メッセージボックス×が表示されます。

 

Left Caption

上を目指す人

簡単なサンプルなので、IsNumericの動作動作を確認したいという方はコピーして利用してみて下さい。

 

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がどのような動きをするか理解できるはずです、簡単なサンプルなのでコピーして使ってみて下さい。