- ベストアンサー
エクセルで英数大文字のみの入力制限は可能ですか
エクセルで、半角英数のみの入力制限を「日本語入力オフ」で やっていますが、それにさらに「大文字」のみの入力制限をか けることは可能でしょうか。 「CapsLock」ができれば良いのですが、パソコンをあまり知ら ない人が入力するためのファイルを作成しています。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
再度のチャレンジです。 セルA1にこれを入れてみてください。 1.「入力規則」-「ユーザー設定」-「数式」-「=EXACT(UPPER(A1),A1)」 2.日本語コントロールを半角英数 これが精一杯の方法だと思います。 これで ABC←可 Abc←不可 abc←不可 AbC←不可 英数が完全に大文字でないと入力できないようになりました。 数字、半角カナも入力できます。 これも制限する場合はまた検討します。
その他の回答 (6)
- nishi6
- ベストアンサー率67% (869/1280)
入力規則と同じような機能を作ってみました。参考程度に見てください。 入力規則のユーザー設定には余り複雑な算式は設定できないみたいですね。 入力した文字全部が小文字かどうかを判定するセル用の関数を作って登録しましたが、『入力規則には、OR演算、AND演算、配列定数は使用できません。』が出てしまいました。 ユーザー定義関数を作って、その結果を入力規則に使用した結果、うまく動きますが、入力セルに対し判定セルが必要になります。 下では、入力規則と(ほぼ)同じ機能のマクロです。判定用のセルは不要にしています。判定はより複雑にできます。 入力規則の日本語入力の『半角英数字』などは、全角でも入力できたと思いますが、下では不可にしています。 判定するなら、『小文字→大文字』、『全角→半角』などの自動変換も簡単にできる事になります。マクロの最後に参考に書いています。 Sheet1で行う例です。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示し、Sheet1をダブルクリック。 出てきたコードウインドウに下記マクロをコピーして貼り付けます。 Const 入力規則 = "B2:D20" の行に入力規則を適用する実際の範囲を設定します。 ここから ↓ Const 入力規則 = "B2:D20" '入力規則範囲(***自分で設定します***) 'エラーメッセージ Const erMsg1 = "入力した値は正しくありません。" & vbCrLf & vbCrLf Const erMsg2 = "ユーザーの設定によって" Const erMsg3 = "セルに入力できる値が制限されています。" '複雑、煩雑な入力規則を行う例。 ' Excelの機能では、 ' 『条件データの入力規則には、OR演算、AND演算、配列定数は使用できません』 ' のメッセージがでて、余り複雑な入力規則は設定できない。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim erMsg As String '入力エラーメッセージ erMsg = erMsg1 & StrConv(erMsg2, vbNarrow) & "、" & StrConv(erMsg3, vbNarrow) Dim moji As String, elm As String '入力文字、入力文字の1文字 Dim L As Integer 'カウンタ Dim chkFlg As Boolean 'エラーチェックフラグ chkFlg = True If Target.Count = 1 Then If Not Intersect(Range(入力規則), Target) Is Nothing Then moji = Target.Text For L = 1 To Len(moji) elm = Mid(moji, L, 1) If Abs(Asc(elm)) < 256 Then Select Case Asc(elm) Case 97 To 122 '入力が誤りのケース chkFlg = False: Exit For Case Else '入力が正しいケース End Select Else '入力が誤りのケース chkFlg = False: Exit For End If Next End If End If '入力後の処理 If chkFlg = False Then If MsgBox(erMsg, vbRetryCancel + vbCritical) = vbRetry Then 'Target = StrConv(moji, vbNarrow + vbUpperCase) '半角大文字にしてしまう Target.Select '再試行 Else Target = "" 'キャンセル Target.Select End If End If End Sub
お礼
ぐわーっ!!あ、ありがとうございましたーっ!! 私の知的レベルでは…き、きびしいようです… 勉強させてください。
- mayumayukko
- ベストアンサー率20% (24/117)
説明が不足してましたので追加しますね。 1.日本語入力を半角英数にします。 2.入力規則をユーザー設定にします。 3.数式のところに 「=(CODE(UPPER(A1))=CODE(A1))」←セルA1の時 を入力します。 (ここで数式エラーになりますがそのまま続けるにしてください) 4.入力規則(英数半角大文字)したいところにコピーします。 5.入力規則違反のとき大げさな表示がでるので入力時メッセージやエラーメッセージも合わせて入力しておくと親切だと思います。 ただし、この方法は文字列の先頭文字だけの大文字入力規制ですので文字列全体を大文字入力規制にすることはできないですね。 例:ABC←入力可 abc←入力不可 Abc←入力可(これはNGですよね?) でも半角大文字で入力する機転になるかもしれませんが…。
- imogasi
- ベストアンサー率27% (4737/17069)
別の列が必要ですが、「=JIS(A1)」のように、JIS関数を使って、強制的に全角文字にしてしまい、入力者には勝手にさせる手も有りますよね。
お礼
ありがとうございました。どうしても別の列が必要ですか。 うーん…
- mayumayukko
- ベストアンサー率20% (24/117)
たぶんこれで可能だと思いますよ。 1.入力規則をユーザー設定にします。 2.数式のところに 「=(CODE(UPPER(A1))=CODE(A1))」←セルA1の時 を入力します。 3.入力規則(英数半角大文字)したいところにコピーします。 これで大丈夫かと思いますよ。 ただ、入力規則違反のとき大げさな表示がでるので 入力時メッセージやエラーメッセージも合わせて入力しておくと親切だと思います。 ちょっと試してみてくださいね。 ちょっとイメージ違ったかな?
補足
アドバイスありがとうございます。残念ながら 「数式はエラーと思われます…」という表示が出て やはり小文字でしか入力できません。 日本語入力オフの入力規則をしているからでしょうか。
- celena
- ベストアンサー率19% (26/132)
制限をかける方法はわかりませんが、他のセルを使って入力された文字を大文字にすることは出来ます。 使用するのは upper関数です。 同時にasc関数も使えば半角英数の大文字に出来ます。 以下はA1の文字列があるときの例です。 =upper(asc(A1))
お礼
ありがとうございました。別にセルが必要なのですね…
- kensaku
- ベストアンサー率22% (2112/9525)
capslockしか無いでしょう。別なセルでチェックすることはできます。B列に次の関数を入れると A B 表示 1 abc @lower(a1)>>>abc 2 ABC @lower(a1)>>>abc 3 Abc @lower(a1)>>>abc となります。この結果を値複写すればいいですね。 逆もできます。関数はupperです。
お礼
早速のご回答ありがとうございました。Capslockしか ないのですね。エクセルでたいていのことはできると 思ったのですが…
お礼
何度もトライしていただきありがとうございました。 入力時に自動的に大文字になることは不可能のようですね。 上記方法を採用させていただきます!助かりました。