|
▼翔子 さん:
>auto_openは、Sheetモジュール、標準モジュール、ThisWorkbookモジュール
>何処に書いても良いのですか?
ThisWorkbookモジュールのWorkbook_Open、標準モジュールの Auto_Open いずれも
ブックが開かれたときに自動実行されます。
これらのプロシジャは、それ以外のモジュールに書いても機能しません。
なお、Auto_Open は、別ブックのマクロから、このマクロブックが開かれた場合は機能しません。(自動実行されません)
Workbook_Openのほうは、その場合にも自動実行されますので、こちらを使うのが一般的ですね。
Auto_Open は、やや、古い手法。いずれにしても、どちらか一方にしたほうがいいですよ。
>質問1
>注文書E2,E4,G4は入力出来るようにしたいのです。
質問の意味がよくわかりませんので、ペつのポイントでメモします。(少し長くなりますが)
1.まず、シートの保護で、セルの入力を禁止するためには、その前に「セル書式のロック」を
設定しなければいけません。別の言い方をすれば
・セル組織でセル保護(ロック)をしてもシート保護をしなければ有効にはなりません。
・また、セル保護(ロック)をはずすと、シート保護をかけても、そのセル入力が可能になります。
まお、初期値、シート上の全セルの保護はロックに設定されています。
2.シート保護のダイアログ
・シートとロックされたセルの内容を保護する(C)
ここにチェックをいれなければシート保護操作そのものができません。
マクロコードとしては、Contents:=True ですが、逆にいえば、操作で設定すれば Contents:=False にはなりません。
Contents:=False は、セルロックがかかっていてもかかっていなくても、入力が可能というシート保護。
ですからマナさん指摘のとおり「意味がないですね。」ということになります。
・操作者に許可する、ロックされたセル、されていないセルの範囲の選択可否は以下の組み合わせのみ
ロックされたセル範囲の選択 チェック チェックなし チェックなし
ロックされていないセル範囲の選択 チェック チェックなし チェック
初期値として表示されるのは両方にチェックがついた形ですね。 で、ここでの選択結果は Protectメソッドコードには
あらわれません。
その組み合わせに従って、シート.EnableSelection = 選択された組み合わせ条件 というコードになります。
(両方チェックすれば、デフォルトの NoRistriction になりますが、マクロ記録では生成されません)
3.マクロ内でのProtectメソッドの留意点
シート保護のダイアログには操作者に許可する様々な操作の選択ができます。
で、UserInterface付保護であろうが、保護解除後の再保護であろうが、マクロでのProtectメソッドは
【それぞれの条件を、引数としてコード内で指定】することが必要です。
別の言い方をすれば【指定しない条件】については、【エクセルが定めたデフォルト】になってしまうということです。
エクセルが定めたデフォルトは、まっさらなシートでシート保護ダイアログを表示した時の状態、つまり
【すべての操作を許可しない】ということになります。
かりに、並び替えOKという設定がされていたとしても、マクロで AllowSorting:=True と明記しなければ
そのあと、操作者が並び替えをしようとしてもできなくなります。【要注意】です。
以下のいずれかにする必要があります。
・操作で保護した時の条件を、その通りにすべて記述
・あるいは、すべての条件に対して、操作で設定されている値を引き継ぐ
|
|