電子書籍の厳選無料作品が豊富!

エクセル2000を使用しています。
  A B C D E          F
1  2 3 4 5 6    ROUND((A1+B1)*C1*D1*E1,1)) 
2  2 3 4 5 6    ROUND((A2+B2)*C2*D2*E2,1)) 

という表を作成しています。
F列には、数式以外入力できないようにしたいのですが、
どうすればよいのでしょうか?

どうかお知恵を貸して下さい。
よろしくお願いします。

A 回答 (2件)

> 入力規則で数式のみ入力可能にする。



一般機能ではできないのではないでしょうか。
次のようなマクロ(拙い表現ですが)で処理するのはいかがでしょう。

1.入力規則を設定したいセル範囲を選択して、Input という名前を定義
 します。
2.シートタブの右クリックから「コードの表示」を選択し、表示される
 画面に以下をコピペして閉じます。
 '
 Private Sub Worksheet_Change(ByVal Target As Range)
  Dim chk
  chk = 0
  If Intersect(Range("Input"), Target) Is Nothing Then Exit Sub
  If Target.Value = "" Then Exit Sub
  If "'" & Target.Value = "'" & Target.Formula Then
   Application.EnableEvents = False
   chk = 1
   Target.Activate
   MsgBox "数式以外は入力できません。"
   Application.EnableEvents = True
  End If
  If chk = 1 Then SendKeys "{DEL}{F2}"
 End Sub
    • good
    • 0
この回答へのお礼

遅くなってすみません。
ありがとうございました。

お礼日時:2007/07/05 10:06

普通、関数は


(1)前もって入れておいて、データを入れて結果を見る
く2)データを入れて、直後に当人が式を入れる
と思いますが
本件ニーズが、私には理解できない、不思議な問題です。
考え方や設計に無理はありませんか?
ーー
通常の入力規則では、問題にするのは
(1)データの値を直接(全ての値から文字列まで)
(2)関数を利用できるが、関数が、利用する「値」と、結果として
返る「値」を問題にできるのみです。(ユーザー定義)
(2)はセルの、書式や数式の有無・形を問題にできません(表現・指定できません)
ユーザー関数化してやろうとしたが、やり方が悪いかもしれないが、エラーが出た。
ーー
VBAでやると
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.HasFormula Then
Else
Application.EnableEvents = False
MsgBox "式を入れること"
Target = ""
Target.Select
Application.EnableEvents = True
End If
End Sub

VBEのそのシートのシートイベントに上記を貼り付ける。
(そのシートがSheet1なら、ProjectエクスプローラーのSheetなど。)
    • good
    • 0
この回答へのお礼

遅れて申し訳ありません。
詳しい回答ありがとうございます。

お礼日時:2007/07/18 13:19

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