こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2014-02-06 07:22:33

QNo.8463423

困ってます

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

必ず新しいシートで(他の方の回答の手順をかぶらない事)お試しを。

手順:
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

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)と文字列の記入、セルの削除はそのままです。

投稿日時 - 2014-02-06 12:01:31

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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」って数値を入れたら?

投稿日時 - 2014-02-06 08:24:20

ANo.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

投稿日時 - 2014-02-06 08:17:41

ANo.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

投稿日時 - 2014-02-06 08:04:20

あなたにオススメの質問