• ベストアンサー

計算式しか入力できないように制限できますか?

Excelが苦手な人なのでしょうが、どうしても電卓で計算して、その計算結果をセルに入力する人達がいます。Excelは計算できるのですから、=5+3+8.5+7などのように計算式を入力してくれるといいのですが。。。。 そこで、計算式でないと入力できないように制限を設定することは可能なのでしょうか???

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

必ず新しいシートで(他の方の回答の手順をかぶらない事)お試しを。 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける Private Sub Worksheet_Change(ByVal Target As Range)  Dim h As Range  For Each h In Target   If Not h = "" Then   If Not h.HasFormula And IsNumeric(h.Value) Then    MsgBox "FORMULAs ONLY"    Application.EnableEvents = False    Application.Undo    Application.EnableEvents = True   End If   End If  Exit Sub  Next End Sub ファイルメニューから終了してエクセルに戻る セルに生数字を記入した時だけ禁止します。 数式(SUM関数とかもOK)と文字列の記入、セルの削除はそのままです。

その他の回答 (3)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.3

シートの構成が悪いのでは? 例えば、 A1:5 B1:3 C1:8.5 D1:7 と入力すると、E1に=A1+B1+C1+D1が計算されるようにしておいて、A1~D1以外はセルをロックして入力不可能にしとくとか。 特定のセル以外を入力不可能にするのは簡単です。 Windows TIPS:Excelシートの特定のセルを編集禁止にする - @IT http://www.atmarkit.co.jp/ait/articles/0709/28/news153.html -- > そこで、計算式でないと入力できないように制限を設定することは可能なのでしょうか??? 出来なくいはないと思いますが、「計算式とは何か?」って条件をハッキリしてください。 =が入ってれば良い?「=23.5」って電卓で計算した数値を入れたら? +が入ってれば良い?「=0+23.5」って数値を入れたら?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 たびたびごめんなさい。 前回のコードでは結果がマイナスになった場合でも反応してしまいますので、 前回のコードは削除して↓のコードに変更してください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If Not IsNumeric(.Value) Then If InStr(.Value, "+") > 0 Or InStr(.Value, "-") > 0 Or InStr(.Value, "*") > 0 Or InStr(.Value, "/") > 0 Then MsgBox "「=」から始まる計算式を入力してください。" .Select .Value = "" .NumberFormatLocal = "G/標準" Exit Sub End If End If End With End Sub 'この行まで ※ 文字列は入力できるようにしていますが、ハイフンは入らないという前提です。 どうも失礼しました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! VBAになってしまいますが、一例です。 前提条件として、四則計算の「加減乗除」(+,-,*,/)だけとしています。 仮にA列に数式を入力する場合です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻り、A列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If .Value <> "" Then If InStr(.Value, "+") > 0 Or InStr(.Value, "-") > 0 Or InStr(.Value, "*") > 0 Or InStr(.Value, "/") > 0 Then MsgBox "「=」から始まる計算式を入力してください。" .Select .Value = "" .NumberFormatLocal = "G/標準" Exit Sub End If End If End With End Sub 'この行まで ※ コード内の >Range("A:A")  は実際のデータに合わせて範囲を調整します。 こんなんではどうでしょうか?m(_ _)m

関連するQ&A