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
アドバイスをよろしくお願いいたします。
お礼
回答ありがとうございます。 SendKeysでは解消できませんでした。 参照先のファイルは複数人で使用しており、テンキーなしのPCなので半角のみで入力と指定しても全角入力する人がいた時の為に行いたかったのですが、やはり再計算等あるので「半角入力」の徹底をし、正しい参照先で入力するようにしようと思います。