久しぶりの投稿になります。
今回は、セルに入力された文字のチェック方法を紹介します。
1)「データの入力規則」を使用する方法
2)半角と全角が混ざっていないかをチェックする方法
エクセルシートに入力されてた値に間違いが無いかをマクロ(VBA)でチェックして内容が間違っていた場合に「入力が間違っています。」って表示できるといいですよね。例えば、入力用シートに入力された値を使って、別シートに見積もり書を作成するときなどです。入力した時点である程度チェックできるので便利だと思います。
1)「データの入力規則」を使用する方法
この方法は、マクロ(VBA)を使わなくても出来る方法です。
セルに入力する値を、数値(整数・少数)、日付や文字列などに限定できます。
例えば1~99の数値だけが入力できるように設定してみます。
入力の規則を設定するセルを選択してから、「データ」タブの「データの入力規則」を選択します。
「データの入力規則」ウインドウが開きます。
「設定」タブの入力値の種類から「整数」を選択します。最小値に「1」、最大値に「99」を入力します。
「エラーメッセージ」タブのタイトルとエラーメッセージ欄に入力エラー時に表示するメッセージを入力します。
以上で準備ができました。入力規則を設定したセルに「123」と入力してみましょう。エラーメッセージが表示されるはずです。
同じように、「入力値の種類」を少数・日付、文字列(長さ)に変更するだけで、セルに入力できる値をチェックする方法が変更できます。
2)半角と全角が混ざっていないかをチェックする方法
氏名や住所など日本語で入力してもらうセルの場合にはマクロ(VBA)でも簡単にチェックできます。厳密にチェックするにはもっと高度な方法を使用しますが、ここでは簡単な方法を紹介します。
B2セルに文字を入力し、コマンドボタンをクリックしたら、B2セルの内容に半角が混ざっている場合はエラー表示をします。「B2セルの入力が完了したら判定するマクロを実行する。」方法もありますが、今回はコマンドボタンを使います。
シート上にコマンドボタンを用意します。
「開発」タブの「挿入」から「フォームコントロール」の「ボタン」をクリックして、シート上のボタンを配置する範囲をドラッグします。マクロの登録ウインドウが表示されますので、「新規作成」をクリックします。
コードを入力するVBAのウインドウが開きますので、以下の様にコードを入力します。
Sub ボタン1_Click()
Dim strCellA As String
strCellA = Range("B2").Value
If Len(strCellA) * 2 <> LenB(StrConv(strCellA, vbFromUnicode)) Then
MsgBox "半角文字が入力されています。", vbCritical, "入力エラー"
End If
End Sub
コードの入力が終了したら、元のExcelシートに戻ってください。「ボタン1」ができています。
完成です。さっそくB2セルに何か値を入力して「ボタン1」をクリックしてみましょう。
試しに、「Excelの種」と入力してみましょう。Excelは半角で入力してみてください。
半角文字が入力されているので、入力エラーのウインドウが表示されました。
もちろん、全ての文字が全角で入力されていれば、入力エラーのウインドウは表示されません。
If Len(strCellA) * 2 <> LenB(StrConv(strCellA, vbFromUnicode)) Then
の部分を
If strCellA <> StrConv(strCellA, vbWide) Then
に変更しても同じようなことができます。
今回はここまでです。
次回はもう少し高度なチェック方法を紹介する予定です。