プロが教える店舗&オフィスのセキュリティ対策術

エクセルで、半角英数のみの入力制限を「日本語入力オフ」で
やっていますが、それにさらに「大文字」のみの入力制限をか
けることは可能でしょうか。

「CapsLock」ができれば良いのですが、パソコンをあまり知ら
ない人が入力するためのファイルを作成しています。

A 回答 (7件)

再度のチャレンジです。


セルA1にこれを入れてみてください。
1.「入力規則」-「ユーザー設定」-「数式」-「=EXACT(UPPER(A1),A1)」
2.日本語コントロールを半角英数
これが精一杯の方法だと思います。
これで
ABC←可 Abc←不可 abc←不可 AbC←不可
英数が完全に大文字でないと入力できないようになりました。
数字、半角カナも入力できます。
これも制限する場合はまた検討します。
    • good
    • 6
この回答へのお礼

何度もトライしていただきありがとうございました。
入力時に自動的に大文字になることは不可能のようですね。

上記方法を採用させていただきます!助かりました。

お礼日時:2002/05/15 16:33

入力規則と同じような機能を作ってみました。

参考程度に見てください。

入力規則のユーザー設定には余り複雑な算式は設定できないみたいですね。
入力した文字全部が小文字かどうかを判定するセル用の関数を作って登録しましたが、『入力規則には、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
    • good
    • 2
この回答へのお礼

ぐわーっ!!あ、ありがとうございましたーっ!!
私の知的レベルでは…き、きびしいようです…
勉強させてください。

お礼日時:2002/05/15 16:38

説明が不足してましたので追加しますね。



1.日本語入力を半角英数にします。
2.入力規則をユーザー設定にします。
3.数式のところに
  「=(CODE(UPPER(A1))=CODE(A1))」←セルA1の時
  を入力します。
(ここで数式エラーになりますがそのまま続けるにしてください)
4.入力規則(英数半角大文字)したいところにコピーします。
5.入力規則違反のとき大げさな表示がでるので入力時メッセージやエラーメッセージも合わせて入力しておくと親切だと思います。

ただし、この方法は文字列の先頭文字だけの大文字入力規制ですので文字列全体を大文字入力規制にすることはできないですね。
例:ABC←入力可 abc←入力不可 Abc←入力可(これはNGですよね?)
でも半角大文字で入力する機転になるかもしれませんが…。
    • good
    • 2

別の列が必要ですが、「=JIS(A1)」のように、JIS関数を使って、強制的に全角文字にしてしまい、入力者には勝手にさせる手も有りますよね。

    • good
    • 2
この回答へのお礼

ありがとうございました。どうしても別の列が必要ですか。
うーん…

お礼日時:2002/05/15 08:26

たぶんこれで可能だと思いますよ。


1.入力規則をユーザー設定にします。
2.数式のところに
  「=(CODE(UPPER(A1))=CODE(A1))」←セルA1の時
  を入力します。
3.入力規則(英数半角大文字)したいところにコピーします。
これで大丈夫かと思いますよ。
ただ、入力規則違反のとき大げさな表示がでるので
入力時メッセージやエラーメッセージも合わせて入力しておくと親切だと思います。
ちょっと試してみてくださいね。
ちょっとイメージ違ったかな?

この回答への補足

アドバイスありがとうございます。残念ながら
「数式はエラーと思われます…」という表示が出て
やはり小文字でしか入力できません。
日本語入力オフの入力規則をしているからでしょうか。

補足日時:2002/05/15 08:16
    • good
    • 0

制限をかける方法はわかりませんが、他のセルを使って入力された文字を大文字にすることは出来ます。


使用するのは upper関数です。
同時にasc関数も使えば半角英数の大文字に出来ます。


以下はA1の文字列があるときの例です。

=upper(asc(A1))
    • good
    • 0
この回答へのお礼

ありがとうございました。別にセルが必要なのですね…

お礼日時:2002/05/15 08:24

capslockしか無いでしょう。

別なセルでチェックすることはできます。B列に次の関数を入れると
   A   B      表示
1 abc   @lower(a1)>>>abc
2 ABC   @lower(a1)>>>abc
3 Abc   @lower(a1)>>>abc
となります。この結果を値複写すればいいですね。
逆もできます。関数はupperです。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。Capslockしか
ないのですね。エクセルでたいていのことはできると
思ったのですが…

お礼日時:2002/05/15 08:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A