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

Left Caption

疑問がある人

入力した文字の全角・半角がバラバラだと見栄えが悪い。全角・半角を簡単に揃える方法はないの?

 

こんな疑問にお答えします。

 

結論から言うと、全角・半角を変換するマクロを導入する!です。

 

全角・半角を変換するマクロは以下の作業効率をアップさせることができます。

 

  • テキスト入力が多い作業の効率化
  • 英数字が頻繁に使われる文書の作成
  • 全角・半角が統一された資料の作成

 

テキストの全角・半角を気にせず編集作業を進めることができるので、作業スピードが格段にアップ

 

入力作業がすべて完了したあとにマクロを実行して全角・半角を揃えれば、

見栄えの良いキレイな資料の完成です。

 

この記事では、6種類の全角・半角を変換するマクロの導入方法が掲載されています。

 

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

6種類の変換マクロは資料作りでよく利用されます。

あなたの業務内容にあった変換マクロを選んで是非使い方をマスターしてみてください。

 

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

 

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

 

 

 

変換マクロを使えば選択した範囲のテキストを一瞬で修正することができます

 

変換マクロ導入前は、

「半角に変換したいテキストを選択し「F8キー」を押す」

「全角に変換したいテキストを選択肢「F7キー」を押す」

といった手間のかかる作業を繰り返し行っていましたが、一切不要になります。

 

Left Caption

上を目指す人

エクセルで英数字が含まれる文章の作成作業にピッタリのマクロです。

下記のサイトでは、この記事で紹介している「全角・半角を変換するマクロ」が設定されているエクセルファイルをダウンロードすることが可能です。

 

すぐに「全角・半角を変換するマクロ」を使ってみたい!という方は是非参考にしてみてください。

 

全角・半角を変換するマクロの導入方法

上記の動画で紹介している「全角・半角を変換するマクロ」の導入方法を紹介します。

 

6種類のサンプル事例を個別にご紹介していきますが、

下記の「全角・半角を変換するマクロ導入の流れ」は全種類共通の考え方です。

全角・半角を変換するマクロ導入の流れ

 

  1. エクセルでVBAを開く
  2. Moduleにサンプルマクロを貼り付ける
  3. ボタンを作成
  4. 作成したボタンにVBAを設定する
  5. ボタンで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に格納する

という意味です。

 

Left Caption

上を目指す人

Functionプロシージャを使って数字を抽出するマクロはいろんな業務に応用することが可能です。

 

下記の記事では、Functionプロシージャについて詳しく紹介しています。

 

 

IsNumeric関数の解説

 

IsNumeric関数は、数値か数値以外かを判別する関数です。

 

基本構造

 

IsNumeric(引数)

 

引数が数値だとTrue、数値以外だとFalseを返す

 

 

IsNumeric関数を使ったサンプル事例

Sub test
T = 1234
If IsNumeric(T) Then
Msgbox "〇"
MsgBox"×"
End If
End Sub

 

変数Tに数字を入れた場合メッセージボックスに〇が表示され、

変数Tに文字列を入れた場合メッセージボックス×が表示されます。

 

Left Caption

上を目指す人

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

 

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関数がどのような動きをするか理解できるはずです。

 

Left Caption

上を目指す人

簡単なサンプルなのでコピーして使ってみて下さい。