• ベストアンサー

エクセルの入力規則で数式のみ入力可能にするには

エクセル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列には、数式以外入力できないようにしたいのですが、 どうすればよいのでしょうか? どうかお知恵を貸して下さい。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

> 入力規則で数式のみ入力可能にする。 一般機能ではできないのではないでしょうか。 次のようなマクロ(拙い表現ですが)で処理するのはいかがでしょう。 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

nikku0175
質問者

お礼

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

普通、関数は (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など。)

nikku0175
質問者

お礼

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

関連するQ&A