VBAの入力規則について質問です。
VBAの入力規則について質問です。
Excelで、D列は全角50文字(半角100文字)以内の入力を可能とし、
それ以上の入力の場合、エラーを表示させたいと思います。
全角と半角をバイト数で判別し、以下のようなコードを考えましたが、
全角の場合しかうまくできません。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ByteCount As Long
ByteCount = LenB(StrConv(Target, vbFromUnicode))
If Target.Column = 4 Then
Select Case ByteCount
Case Is > 100
With Target.Validation
.Add _
Type:=xlValidateTextLength, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=1, Formula2:=100
.ErrorTitle = "入力エラー"
.ErrorMessage = "全角50文字(半角100文字)以内で入力してください。"
.IgnoreBlank = False
End With
Case 1 To 100
With Target.Validation
.Add _
Type:=xlValidateTextLength, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=1, Formula2:=50
.ErrorTitle = "入力エラー"
.ErrorMessage = "全角50文字(半角100文字)以内で入力してください。"
.IgnoreBlank = False
End With
End Select
End If
End Sub
アドバイスをよろしくお願いいたします。
お礼
nishi6さん、 おかげさまで「方法1」で希望通りの動作ができました。 過去Logなどで調べている時にnishi6さんご回答によく出会います。結果だけではなく解説付のご回答が多く、理解に役立ちとても助けていただいてます。 これからもよろしくお願いします。