Excel VBA質問箱 IV

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

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


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

【14827】セルの保護解除をCellプロパティーで変更したいのですが。。。 ごーはら 04/6/8(火) 17:23 質問[未読]
【14829】Re:セルの保護解除をCellプロパティーで変... Asaki 04/6/8(火) 17:30 回答[未読]
【14831】Re:セルの保護解除をCellプロパティーで変... ごーはら 04/6/8(火) 18:30 発言[未読]
【14845】Re:セルの保護解除をCellプロパティーで変... Asaki 04/6/8(火) 20:12 回答[未読]
【14867】Re:セルの保護解除をCellプロパティーで変... Kobasan 04/6/8(火) 23:07 回答[未読]
【14886】Re:セルの保護解除をCellプロパティーで変... ごーはら 04/6/9(水) 12:19 回答[未読]
【14888】Re:セルの保護解除をCellプロパティーで変... Asaki 04/6/9(水) 12:33 回答[未読]
【14891】Re:セルの保護解除をCellプロパティーで変... ごーはら 04/6/9(水) 13:54 お礼[未読]

【14827】セルの保護解除をCellプロパティーで変更...
質問  ごーはら E-MAILWEB  - 04/6/8(火) 17:23 -

引用なし
パスワード
   お世話になっています、よろしくお願いします。

セルの保護の設定・解除をマクロで行いたいのですが、
セルの番地に引数が入っているために、
Cellプロパティーで参照しようとするとエラーが出てしまいます。

.Cells(i, 10).Locked = True

因みに、同じ場所に次のような記述で試してみるとうまくいきました。
.Range("A5").Locked = True

どうすればよいでしょうか?ご教授お願いいたします。。。

【14829】Re:セルの保護解除をCellプロパティーで...
回答  Asaki  - 04/6/8(火) 17:30 -

引用なし
パスワード
   こんにちは。

>セルの番地に引数が入っているために
そんなことないと思いますよ。

>.Cells(i, 10).Locked = True
↑が実行されるときに、iはセルの指定として有効な数字が入っていますか?
ステップ実行などで、確認されては?

【14831】Re:セルの保護解除をCellプロパティーで...
発言  ごーはら E-MAILWEB  - 04/6/8(火) 18:30 -

引用なし
パスワード
   回答ありがとうございます。
すみません、質問が舌足らずでした。

>セルの保護の設定・解除をマクロで行いたいのですが、
>セルの番地に引数が入っているために、
>Cellプロパティーで参照しようとするとエラーが出てしまいます。
>.Cells(i, 10).Locked = True

は、
「普通Rangeクラスで参照するlockedプロパティーですが、
セルの番地に引数が入っているのでCellクラスで試したところ
エラーが出てしまった」
ということなのです。

因みに、iには有効な値、15が入っていました。
エラーは「RangeクラスのLockedプロパティーを設定できません」というものなのですが、Cellクラスではセルの保護・解除はできないのでしょうか

あるいは、Rangeクラスでアドレスに引数をとる方法があればそれでもいけると思うのですが、、、

【14845】Re:セルの保護解除をCellプロパティーで...
回答  Asaki  - 04/6/8(火) 20:12 -

引用なし
パスワード
   処理する前に
シートの保護は外しておくか、UserInterfaceOnly=True のモードで保護しておくか、
いずれかですが、そのへんはどうでしょうか?

>>.Cells(i, 10).Locked = True
With を使用していると思いますが、. の左側は何でしょう?
↑のようなCellsの記述そのものは、たぶん、問題ないと思います。

【14867】Re:セルの保護解除をCellプロパティーで...
回答  Kobasan  - 04/6/8(火) 23:07 -

引用なし
パスワード
   Asakiさんの通りだと思います。
これで動きます。
Sub aa()
  i = 2
  ActiveSheet.Unprotect
  Cells(i, 10).Locked = True
  ActiveSheet.Protect
End Sub

Sub bb()
  i = 2
  ActiveSheet.Unprotect
  Cells(i, 10).Locked = False
  ActiveSheet.Protect
End Sub

【14886】Re:セルの保護解除をCellプロパティーで...
回答  ごーはら E-MAILWEB  - 04/6/9(水) 12:19 -

引用なし
パスワード
   Kobasan さん,Asakiさん 、ありがとうございます、

kobasanのサンプル、動きました。

ただ、自分の使用するものに当てはめるとどうもうまくいかなかったので、
少しいろいろ試してみました。
保護を解除したいセルは、たとえば(15,10)から(17,13)まで結合されたものなのですが、

  WS1.Cells(15, 10).Locked = False

ですとうまくいきません。(WS1:ワークシート)

結合が行われていないセル(2,10)に関しては

  WS1.Cells(2, 10).Locked = False

でうまくいきました。

そこで、次のように範囲を全部指定するとうまく保護を解除することができました

  Range(WS1.Cells(15, 10), WS1.Cells(17, 13)).Locked = False

普通、結合されたセルの指定はセル全体の左上を指定すればいいと思うのですが、、この場合はなぜ?
疑問が残ります。。。

【14888】Re:セルの保護解除をCellプロパティーで...
回答  Asaki  - 04/6/9(水) 12:33 -

引用なし
パスワード
   ↓こんな感じならいけそうです。
Cells(1, 1).MergeArea.Locked = True

【14891】Re:セルの保護解除をCellプロパティーで...
お礼  ごーはら E-MAILWEB  - 04/6/9(水) 13:54 -

引用なし
パスワード
   >Cells(1, 1).MergeArea.Locked = True

なるほど、範囲指定のプロパティーがあるのですね。
まったく知りませんでした。
納得です。
ありがとうございました。

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