• ベストアンサー

エクセルでセルに入力制限をしたいのですが。

例えばA1のセルには全角で10文字まで、B1のセルには半角カナで10文字までという入力制限ができるでしょうか?入力規則で設定したところ、文字数制限はできるのですが、半角,全角の区別をしてくれません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.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 でわ、がんばってください。

natukawa01
質問者

お礼

ありがとうございまいした。参考になりました。

その他の回答 (4)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

> 例えば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

natukawa01
質問者

お礼

教えて頂いたコードをコピーして試してみたところ、上手くいきました。ありがとうございました。 このような感じで下記のように作りたいのですが。  ・A1セル:先頭に0必須の半角数値、        記号はハイフンのみOK  ・C5セル:全角文字40  ・E10セル:半角カナ40  ・H4セル:半角英数字8、先頭に0がつく場合もあり  ・I6セル:半角数値3 規制が細かすぎて無理でしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。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 など

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=355269,http://oshiete1.goo.ne.jp/kotaeru.php3?q=456394
  • snow8686
  • ベストアンサー率46% (6/13)
回答No.2

[データの入力規制]の[日本語入力タブ]で[全角カタカナ]、[半角カタカナ]を設定すれば、セルに移動した時点で入力モードが切り替わります。 わざわざ別の入力モードに切り替えるか変換してしまえば、全角/半角以外でもそれぞれ入力はできてしまいますが、それも防ぎたいということでしょうか?

natukawa01
質問者

補足

はい、全角なら全角で、半角文字や半角スペース等が入力されたらエラーをだしたいのです。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

セルではムリでしょう。 フォームを作って、VBAで制限を掛けるしかないです。

natukawa01
質問者

お礼

やっぱり無理ですか。。 VBAだとどのように作ったらよいのでしょう? ご存知の方教えてください。