• ベストアンサー

Excel VBAでのセル制御について

初めまして。 今、Excelのファイルで備品の管理をしている台帳があるのですが、その管理しているシートのセルは手入力した時にだけ、メッセージを表示し、さらに、手入力で修正した前の値が戻るようなコードはあるのでしょうか? 現在、備品の交換はマクロであるので、マクロでのみセルの修正が有効で、手入力で入力した場合は無効にしたいのです。 宜しくお願いします。

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

  • ベストアンサー
  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

VBAにおいて、Protectでシートを保護するときに、UserInterfaceOnlyという引数をTrueにすると、マクロでの変更は出来るけど、手入力は出来ないような保護をすることができます。 ただし、一旦ブックを閉じて、再度ブックを開くと、マクロでの変更が出来ない保護状態になってしまうので、ブックを開くたびに、保護し直さなければなりません。 ThisWorkbookモジュールのWorkbook_Openイベント等で対応しましょう。 http://officetanaka.net/excel/vba/sheet/sheet07.htm

参考URL:
http://officetanaka.net/excel/vba/sheet/sheet07.htm
potara_ran
質問者

お礼

早速のご返信ありがとうございます。 参考にさせて頂きます。

関連するQ&A

  • エクセル ソルバー セル参照をVBAで

    エクセル ソルバーのセル参照をVBAコードで変更しようとしていますが,複数のセル参照がうまくいきません. まず,マクロの記録でセルc3の値を2にするようにC2とC4の値を変更するというコードを記録させました. SolverOk SetCell:="$C$3", MaxMinVal:=2, ValueOf:="6",ByChange:="$C$2,$C$4" 次にセル参照をコードで操作するために"$C$3"の部分はcells(3,3)と置き換えてもうまく起動したのですが,"$C$2,$C$4"の部分は,cells(2,3),cells(4,3)と置き換えると, コード内でエラーメッセージ「コンパイルエラー,修正候補,名前付き引数」とでます.この場合どう修正すればいいのでしょうか. コードでセル参照を操作しようという動機は,例えば「アクティブセルから下のセルを順に3つ参照するよう」など,場合に応じてマクロを指示するためですが,ためしに試みた時点で上記内容でつまずいてしまいました. よろしくご教示お願いします.

  • VBA セルの値を別セルにコピーするには

    VBAでPastespecialでセルの値を別セルにコピーするマクロを組みたいです。 以下は参考にしたソースコードです。 Worksheets("Sheet1").Range("A1:B10").Copy Worksheets("Sheet2").Range("A1").PasteSpecial _                  Paste:=xlPasteValues, _                  Operation:=xlNone, _                  SkipBlanks:=False, _                  Transpose:=False あるExcelマクロの入力フォームSheetに、製品リストと使用している場所のマスタデータをクエリで読み込んで、製品IDと場所のコードを入力したらINDEX関数で抽出し、マクロ実行ボタンを押すと抽出結果を入力フォームの入力欄に貼り付けします。 上記のマクロだと貼り付けする元セルを移動させたら内容がずれた値がそのまま貼り付けされてしまうと思われますが、地道にコードのコピー元のセルを書き直さないといけないのでしょうか。 Excelの関数だと参照範囲を固定したら掴んで移動させてもセル番地が連動して移動してくれますが、マクロの場合どのようにすれば良いでしょうか。 また、複数個所のセルをコピーするので Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False をコピーするセルの箇所に毎回入れていますが、コピー元のセル・コピー先のセル番地を一括して実行する方法はありますでしょうか。 VBAはソースコードを参考に当てはめているだけで、自力でコードを書くスキルは皆無です。 Excelは2016です。 詳しい方いましたらご教授ください。よろしくお願い致します。

  • エクセルマクロのコードを隠す

    とあるExcel2003で開けるxlsファイルを貰いました。 セルに値を入力すると、セルの背景の色が変わります。 そういうマクロを組んでいるんだと思ったのですが、 シートに対して「コードを表示する」で見ても何も書かれていません。 プロジェクト欄にはこのシートと[ThisWorkbook]しかなく、 [ThisWorkbook]にも何も書かれていません。 組んだマクロのコードを何かして隠しているのでしょうか? それともエクセルの設定でそのようなことが可能なのでしょうか。

  • EXCEL VBA シート内の特定のセルに値が入…

    EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム EXCELシート内の特定のセルに値が入力された際に処理を実行するプログラムをEXCEL VBAで作成したいと考えています。 EXCELに計測データを取込み、このデータが設定値以外の場合のみ、トリガーを出す様なイメージで使いたいと思います。 どの様に考えれば良いでしょうか?サンプル等ありましたら紹介ください。 上記質問の”トリガー”について補足します。 あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。 単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作したいという意味です。。

  • excelのセルの色を変える

    excel2000でsheet1にある列のうち たとえば sheet1のセルA1の値が「Z-1」だったら sheet2のセルB1を赤に塗りつぶす ってことはマクロでできますか? できなければVBAでどのようなコードになるのか教えていただけませんでしょうか?

  • EXCELでワークシートを検索して値を返したい。

    こんばんは。 いろいろ調べてみたのですが、わからなかったので質問させていただきます。 EXCELで「111」「222」「333」「444」「555」という五つのワークシート名を持つブックがあります。 「111」のシートのセル"A1"に,"222"と入力すると、隣のセル"A2"にシート「222」の特定のセルの値(例えばC20のセルの値)を返し、セル"A1"に「555」と入力するとセル"A2"にシート「555」の特定のセルの値を返すといったものを作るには、どうしたらいいんでしょうか? できれば関数だけで作りたいのですが、もしむりならマクロではどういうコードになるのでしょうか? よろしくお願いします。

  • VBAのセルの入力制御について

    エクセルのセルに、 人が直接入力することはできないようにしたいです。 (ただし、マクロで書き込むことは可能) 上記のような処理をしたいのですが 何か良い方法ないでしょうか?

  • エクセル2003のVBA

    お尋ねします。 契約書管理台帳をエクセル2003で作成中です。 シート1には、日付、契約書名、顧客コード、顧客名等 シート2には、顧客コード、顧客名等、顧客名カナ等、顧客情報がリストになっています。 契約書が来たときに、顧客コードをシート2より、ひっぱりたいのです。 リストを考えたのですが、500件ほどあり、とても選べません。 なので、イメージとして カナ検索、例えばフォームに、グーといれれば、グー株式会社を検索し、 0001というコードをセルに表す、という感じです。 VBAを使わなくて良ければ、それが一番いいのですが、色々検索すると、 使わないとできなさそうなので。。。。 どなたか、ご教授ください。よろしくお願いします。

  • エクセルのシート名をセルに入力

    エクセルで、シートの名前をセルに入力するマクロを教えて下さい。 例えば、【05-1234】というシートのA1のセルにマクロで【05-1234】と入力したいのです。 お願いします。

  • VBA セルに入力されている数値でセルを指定する

    Excel VBA初心者です。 Sheet1のA1セルに10、A2セルに3を入力しています。 この入力したセルの数値を参照して、 Sheet2の「Cells(10,3)」(C10セル)を青(Interior.ColorIndex = 5)に 書式変更したいのですが、「Cells(”Sheet1.A1の値”,”Sheet1.A2の値”)」の 書き方がわかりません。 Excel2010を使用しています。 よろしくお願いします。

専門家に質問してみよう