Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2470 / 13646 ツリー ←次へ | 前へ→

【67815】可変の条件でのロックの仕方 koke 11/1/11(火) 16:56 質問[未読]
【67816】Re:可変の条件でのロックの仕方 momo 11/1/11(火) 17:01 発言[未読]
【67820】Re:可変の条件でのロックの仕方 koke 11/1/11(火) 17:59 質問[未読]
【67821】Re:可変の条件でのロックの仕方 momo 11/1/11(火) 18:20 発言[未読]
【67823】Re:可変の条件でのロックの仕方 koke 11/1/11(火) 21:10 質問[未読]
【67825】Re:可変の条件でのロックの仕方 momo 11/1/12(水) 8:45 発言[未読]
【67852】Re:可変の条件でのロックの仕方 koke 11/1/13(木) 10:23 お礼[未読]
【67828】Re:可変の条件でのロックの仕方 UO3 11/1/12(水) 9:50 発言[未読]
【67835】Re:可変の条件でのロックの仕方 UO3 11/1/12(水) 13:46 発言[未読]
【67853】Re:可変の条件でのロックの仕方 koke 11/1/13(木) 10:24 お礼[未読]

【67815】可変の条件でのロックの仕方
質問  koke  - 11/1/11(火) 16:56 -

引用なし
パスワード
   エクセル2000を使用しています。
以下のマクロを作り、19行目の”AAA”を探し、29行目で1つ前の列までロックしようとしています。

新規のエクセルで使用すると、動作しますが、肝心の組み込みたいエクセルだと動作しません。
19行目には”AAA”以外の文字列があります。
(19行目には、”AAA”は必ず1つしかありません)
また、”AAA”は関数で19行目に表示されています。

上手く動作する方法などありましたら、教授ください。

Private Sub Worksheet_Change(ByVal Target As Range)

 Dim h As Range
 Cells.Locked = False
 ActiveSheet.Protect userinterfaceonly:=True
 Set h = Range("19:1").Find(what:="AAA", lookat:=xlWhole)
 If h Is Nothing Then Exit Sub
 If h.Column = 1 Then Exit Sub
 Range(Range("A29"), h.Offset(1, -1)).Locked = True

End Sub

【67816】Re:可変の条件でのロックの仕方
発言  momo  - 11/1/11(火) 17:01 -

引用なし
パスワード
   ▼koke さん:
> Set h = Range("19:1").Find(what:="AAA", lookat:=xlWhole)
Findメソッドの引数を省略してしまっているので確実な動作をしないのではないでしょうか?

特に、数式の結果の値を検索するなら
LookIn:=xlValues
は、省略しないで書きましょう。

【67820】Re:可変の条件でのロックの仕方
質問  koke  - 11/1/11(火) 17:59 -

引用なし
パスワード
   ▼momo さん:
早速の返信ありがとうございます。
LookIn:=xlValuesで上手く実行できました。

しかし、 Range(Range("A29"), h.Offset(1, -1)).Locked = Trueで
実行エラー1004で「RangeクラスのLockedプロパティを設定できません。」を表示され、プロパティが設定が更新されないようです。
何かよい方法があるのでしょうか?

>▼koke さん:
>> Set h = Range("19:1").Find(what:="AAA", lookat:=xlWhole)
>Findメソッドの引数を省略してしまっているので確実な動作をしないのではないでしょうか?
>
>特に、数式の結果の値を検索するなら
>LookIn:=xlValues
>は、省略しないで書きましょう。

【67821】Re:可変の条件でのロックの仕方
発言  momo  - 11/1/11(火) 18:20 -

引用なし
パスワード
   ▼koke さん:
私の環境ではちゃんと動作しているのでわかりませんが
>ActiveSheet.Protect userinterfaceonly:=True
を最後にもっていったらどうなりますか?

【67823】Re:可変の条件でのロックの仕方
質問  koke  - 11/1/11(火) 21:10 -

引用なし
パスワード
   ▼momo さん:
返信ありがとうございます。

>私の環境ではちゃんと動作しているのでわかりませんが
>>ActiveSheet.Protect userinterfaceonly:=True
>を最後にもっていったらどうなりますか?
私の環境でも、新規ファイルでは、問題なく動作しますが、
対象のファイルで動かそうとすると、最後に移動しても実行エラーが出ます。
いろいろ試していますが、未だ解決できずです。

いい案などありましたら、教えてくださると助かります。

【67825】Re:可変の条件でのロックの仕方
発言  momo  - 11/1/12(水) 8:45 -

引用なし
パスワード
   ▼koke さん:
>新規ファイルでは、問題なく動作しますが、

という事ですと、一度UnProtectしてから設定して
最後にProtectとしてみるとどうですか?

【67828】Re:可変の条件でのロックの仕方
発言  UO3  - 11/1/12(水) 9:50 -

引用なし
パスワード
   ▼koke さん:

おはようございます。

最後にロックをかけようとしている領域に中に結合セルはありませんか?
あれば、このエラーメッセージがでます。

【67835】Re:可変の条件でのロックの仕方
発言  UO3  - 11/1/12(水) 13:46 -

引用なし
パスワード
   ▼koke さん:

以下、ちょっと表現として不正確でした。

>最後にロックをかけようとしている領域に中に結合セルはありませんか?
>あれば、このエラーメッセージがでます。

正しくは、

ロックをかけようとしている領域から、その外の領域にまたがって
結合されているセルがあれば、このエラーになります。

【67852】Re:可変の条件でのロックの仕方
お礼  koke  - 11/1/13(木) 10:23 -

引用なし
パスワード
   ▼momo さん:
>という事ですと、一度UnProtectしてから設定して
>最後にProtectとしてみるとどうですか?
返信遅くなりました。
結合セルもあったので、結合セルをなくし、
UnProtectしてから、最後にProtectしたら、無事に動作しました。
初心者にはかなりハードルが高かったです。

【67853】Re:可変の条件でのロックの仕方
お礼  koke  - 11/1/13(木) 10:24 -

引用なし
パスワード
   ▼UO3 さん:
>>最後にロックをかけようとしている領域に中に結合セルはありませんか?
>>あれば、このエラーメッセージがでます。
>
>正しくは、
>
>ロックをかけようとしている領域から、その外の領域にまたがって
>結合されているセルがあれば、このエラーになります。

返信遅くなりました。
結合セルもあったので、結合セルをなくし、
UnProtectしてから、最後にProtectしたら、無事に動作しました。
初心者にはかなりハードルが高かったです。

2470 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free