- 締切済み
エクセルで過去の行だけ保護できる?
エクセルで、例えば家計簿をつけるとして、毎日上から順に入力してい くとして、昨日まで入力したデータを誤っていじってしまわないように 保護できたら便利なんですが。今日入力したら、明日は今日入力した 行は保護されていじれなくなるという機能がエクセルにはありますか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- MackyNo1
- ベストアンサー率53% (1521/2850)
>エクセルには「既入力セルの範囲」を自動的に検出する機能があるのですか? これまで入力したリスト範囲を選択する操作は、リスト上のセルを選択し、CtrlキーとShiftキーを押しながら:(コロン)のキーを押します。 >ですがビジュアルベーシックは苦手なもんで。 エクセルには「新しいマクロの記録」というマクロコードを自動的に書いてくれる機能があります。 たとえば、今回の例の場合は以下のような操作で必要なコードを取得できます(Excel2003の場合)。 準備として、Ctrl+Aですべてのセルを選択し、右クリックから「セルの書式設定」の保護タブで「ロック」のチェックを外しておきます。 「ツール」「「マクロ」「新しいマクロの記録」で「OK」します。 次にリスト上のセルを選択し、Ctrl+Shift+:のショートカット操作を行い、右クリック「セルの書式設定」の保護タブでロックのチェックを入れ、「記録終了」ボタンをクリックしマクロの記録を終了します。 これで今後この操作を自動的に行うには「ツール」「マクロ」「マクロ」でこのマクロを選択してOKすればリスト範囲が自動的に「ロック」がかかることになります(ボタンなどに登録することも可能)。 この操作をファイルが開いたときに自動的に行いたいなら、そのシートのシート名部分を右クリックし「コードの表示」で表示されるVBEの画面の左側のVBEプロジェクトのThisWorkBookをダブルクリックして、表示される画面の左上を「WorkBook」にして Private Sub Workbook_Open() End Sub の部分の空白行に、上記で作成したコード部分(標準モジュールのModule1をダブルクリックして表示されるコードの1行目と最終行は不要)をコピー貼り付けし上書き保存すれば、次回ファイルを開いたときに自動的にこのマクロを実行します。
- WWolf
- ベストアンサー率26% (51/192)
こんにちは。 機能はありませんが、作ることは出来ます。 家計簿で毎日上から順に入力と言う事は行単位で日にちが変わっていくような感じだと想定します。 質問内容というか条件がハッキリしないので取り敢えず簡単に作成しました。 下記をVBEにてThisBookに貼り付けてください。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim WSh As Worksheet For Each WSh In Worksheets WSh.Unprotect WSh.Cells.Locked = False lr = WSh.Range("A65536").End(xlUp).Row WSh.Rows("1:" & lr).Locked = True WSh.Protect Next End Sub これは、単純に各シートのA列の最終列をその日とし、保存時にセルに対しロック設定をします。 この場合、同日に変更は出来ません。というか保護を外せば出来ます。 色々と決め事が無いと使いにくくなると思いますが、参考まで・・・
お礼
回答ありがとうございます。 ですがビジュアルベーシックは苦手なもんで。
- MackyNo1
- ベストアンサー率53% (1521/2850)
エクセルの一般機能では自動的に入力したセルを保護するような機能はありません。 普通は、セルの書式設定の保護タブですべてのセルの「ロック」を外しておいてからシートを保護し、既入力部分だけを順次ロックをかけるというような手順になります。 この処理を自動化したいならマクロを使うことになります。 たとえばブックを開くときに既入力セルの範囲(シートのレイアウトによってこのセル範囲を取得するコードが変わる)のロックを入れるというような手順が簡単かもしれません。
お礼
回答ありがとうございます。エクセルには「既入力セルの範囲」を自動的に検出する機能があるのですか?
お礼
参考になりました。ありがとうございました。 「新しいマクロの記録」で生成されたプロシージャを 呼び出すことでうまくいきました。