- ベストアンサー
エクセルでセルに入力制限をしたいのですが。
例えばA1のセルには全角で10文字まで、B1のセルには半角カナで10文字までという入力制限ができるでしょうか?入力規則で設定したところ、文字数制限はできるのですが、半角,全角の区別をしてくれません。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>・A1セル:先頭に0必須の半角数値、 記号はハイフンのみOK >・E10セル:半角カナ40 上記、二つのケースのみ、書きました。あとは、自分で考えてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim iii1 As Integer, iii2 As Integer Dim sss1 As String '*** ここから If Target.Address = "$A$1" Then '"$A$1" を"$C$5", "$E$10", "$H$4", "$I$6"に変える sss1 = Target.Value iii1 = Len(sss1) If Left(sss1, 1) <> "0" Then GoTo 999 For iii2 = 1 To iii1 If Mid(sss1, iii2, 1) = "-" Then GoTo 888: If Mid(sss1, iii2, 1) < "0" Then GoTo 999: If Mid(sss1, iii2, 1) > "9" Then GoTo 999: 888: Next iii2 End If '*** ここまで '*** ここから If Target.Address = "$E$10" Then '"$A$1" を"$C$5", "$E$10", "$H$4", "$I$6"に変える sss1 = Target.Value iii1 = Len(sss1) '文字数をセット If iii1 > 40 Then GoTo 999 For iii2 = 1 To iii1 If Mid(sss1, iii2, 1) < "ァ" Then GoTo 999: '"ァ"は半角の"ァ"に変える If Mid(sss1, iii2, 1) > "ン" Then GoTo 999: '"ン"は半角の"ン"に変える Next iii2 End If '*** ここまで Exit Sub 999: 'エラー入力処理 Target.Cells.Select MsgBox "入力形式が違います。", vbCritical SendKeys "{F2}", True End Sub でわ、がんばってください。
その他の回答 (4)
- ja7awu
- ベストアンサー率62% (292/464)
> 例えばA1のセルには全角で10文字まで、B1のセルには半角カナで > 10文字までという入力制限ができるでしょうか? VBAによる入力制限の一例です。 対象外の入力するとメッセージが出ます。 セルB1は、半角の《カナ》だけですか? 今は、半角全般が対象です。 「カナ」だけのときは、コードを追加する必要があります。 一応、コードの設定方法を書きましたので、次の通り操作してください。 ・使用しているシートのシート名タブを右クリックして「コードの表示」を 指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 ・以上で完了です。セルA1 & B1 に文字を入力してテストしてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Set Target = Application.Intersect(Range("A1:B1"), Target) If Target Is Nothing Then Exit Sub ' 指定範囲外無視 If Target.Count > 2 Then Exit Sub ' 複数セル変更(クリア等)無視 For Each Rng In Target If Rng.Address(False, False) = "A1" Then If Len(Rng.Value) > 10 Or StrComp(Rng.Value, _ StrConv(Rng.Value, vbWide, vbBinaryCompare)) <> 0 Then Rng.Select MsgBox "全角を10文字以内で入力してください。", vbCritical SendKeys "{F2}", True Exit Sub End If ElseIf Rng.Address(False, False) = "B1" Then If Len(Rng.Value) > 10 Or StrComp(Rng.Value, StrConv(Rng.Value, _ vbNarrow + vbKatakana, vbBinaryCompare)) <> 0 Then Rng.Select MsgBox "半角を10文字以内で入力してください。", vbCritical SendKeys "{F2}", True Exit Sub End If End If Next Rng Set Rng = Nothing End Sub
お礼
教えて頂いたコードをコピーして試してみたところ、上手くいきました。ありがとうございました。 このような感じで下記のように作りたいのですが。 ・A1セル:先頭に0必須の半角数値、 記号はハイフンのみOK ・C5セル:全角文字40 ・E10セル:半角カナ40 ・H4セル:半角英数字8、先頭に0がつく場合もあり ・I6セル:半角数値3 規制が細かすぎて無理でしょうか?
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 VBAでの方法ですが、 半角文字は文字コードが0~255なので、それを条件にしてやればいいと思います。 ユーザーフォームにテキストボックスを置く方法なら、テキストボックスのKeyPressイベントに記述します。 直接セルに入力するなら、WorksheetのSelectionChangeイベントで、Targetに対して記述します。 関連した質問を載せておきます。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=355269 http://oshiete1.goo.ne.jp/kotaeru.php3?q=456394 など
- snow8686
- ベストアンサー率46% (6/13)
[データの入力規制]の[日本語入力タブ]で[全角カタカナ]、[半角カタカナ]を設定すれば、セルに移動した時点で入力モードが切り替わります。 わざわざ別の入力モードに切り替えるか変換してしまえば、全角/半角以外でもそれぞれ入力はできてしまいますが、それも防ぎたいということでしょうか?
補足
はい、全角なら全角で、半角文字や半角スペース等が入力されたらエラーをだしたいのです。
- PAPA0427
- ベストアンサー率22% (559/2488)
セルではムリでしょう。 フォームを作って、VBAで制限を掛けるしかないです。
お礼
やっぱり無理ですか。。 VBAだとどのように作ったらよいのでしょう? ご存知の方教えてください。
お礼
ありがとうございまいした。参考になりました。