'セルが変更された場合に実行する
Private Sub Worksheet_Change(ByVal Target As Range)
'変更されたセルが1行目の1列目だった場合
If Target.Row = 1 And Target.Column = 1 Then
'文字列の長さが5文字を超えた場合
If Len(Cells(1, 1)) > 5 Then
MsgBox "5文字を入力してください"
End If
End If
End Sub
6文字をセルに入力してみます。
5文字を超えたのでメッセージが表示されました。
ユーザーに入力してもらう文字数を制限するのに使えるかと思います。
VBA関数LenBで文字列の長さを取得
もう一つ文字列の長さを取得する関数として『LenB』があります。
これは文字列の長さをバイト数で取得できる関数になります。
Lenと基本は同じで、LenBは1文字を2バイトで返すという関数です。
とりあえずLenBはLenの2倍の値が返ってくると覚えているといいかと思います。
LenBの使いどころは半角と全角を区別して長さを取得できるところです。
LenBだけではできませんがStrConvと組み合わせるとできます。
まずは基本的な動きをみてみます。
半角も全角も2バイト
LenBで文字列を取得すると半角も全角も2バイトを返してきます。
やってみます。
まず半角の文字列のバイト数を取得してみます。
半角の文字列のバイト数を取得
半角の文字列のバイト数を取得するVBAコードです。
『"12345"』のバイト数を取得してしてみます。
Sub TEST5()
Dim A
A = "12345" '半角を入力
MsgBox LenB(A) '文字列のバイト数を取得
End Sub
実行してみます。
半角の文字列のバイト数を取得した結果
『"12345"』で5文字なので『10』バイトが取得できました。
次に全角でやってみます。
全角の文字列のバイト数を取得する
全角の文字列『"あいうえお"』のバイト数を取得するVBAコードです。
Sub TEST6()
Dim A
A = "あいうえお" '全角を入力
MsgBox LenB(A) '文字列のバイト数を取得
End Sub