Excel VBA質問箱 IV

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

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


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

【68612】ロックされたセル以外のセルの値をクリアする ネジクマ 11/3/29(火) 19:26 質問[未読]
【68613】Re:ロックされたセル以外のセルの値をクリ... りん 11/3/29(火) 21:00 発言[未読]
【68614】Re:ロックされたセル以外のセルの値をクリ... bykin 11/3/29(火) 21:07 発言[未読]
【68616】Re:ロックされたセル以外のセルの値をクリ... ネジクマ 11/3/29(火) 21:46 お礼[未読]
【68615】Re:ロックされたセル以外のセルの値をクリ... ネジクマ 11/3/29(火) 21:12 質問[未読]
【68617】Re:ロックされたセル以外のセルの値をクリ... bykin 11/3/29(火) 23:02 回答[未読]
【68630】Re:ロックされたセル以外のセルの値をクリ... ネジクマ 11/3/31(木) 11:05 お礼[未読]

【68612】ロックされたセル以外のセルの値をクリア...
質問  ネジクマ  - 11/3/29(火) 19:26 -

引用なし
パスワード
    ワークシートの指定した範囲の中で、ロックされたセル以外の値を全て消去したいのですが、単純に範囲を指定してClearContentsを使うとエラーが出て止まります。
 そこで以下のようなコードを打ちました。エラーは出ないのですが、何も変化しないようです。どこが間違っているのでしょうか?あるいは全然別の書き方があるのでしょうか?よろしくお願いします。

Sub test()

Sheets(1).Select

Range("A1:AM1000").Select

 If Selection.Locked = False Then
 
  Selection.ClearContents
 
 End If

End Sub

【68613】Re:ロックされたセル以外のセルの値をク...
発言  りん E-MAIL  - 11/3/29(火) 21:00 -

引用なし
パスワード
   ネジクマ さん、こんばんわ。
> そこで以下のようなコードを打ちました。エラーは出ないのですが、何も変化しないようです。どこが間違っているのでしょうか?あるいは全然別の書き方があるのでしょうか?よろしくお願いします。

セルをひとつずつチェックしてみてください。

Sub test()
  Dim r1 As Range
  '計算をとめておく
  Application.Calculation = xlCalculationManual
  '保護されていないセルならクリア
  For Each r1 In ActiveSheet.Range("A1:AM1000")
    If r1.Locked = False Then r1.ClearContents
  Next
  '計算再開
  Application.Calculation = xlCalculationAutomatic
  Application.Calculate
End Sub

【68614】Re:ロックされたセル以外のセルの値をク...
発言  bykin  - 11/3/29(火) 21:07 -

引用なし
パスワード
   こんばんわ。

りんはんに先越されたんで・・・
なんで、

>エラーは出ないのですが、何も変化しないようです。

になったかの、解説だけ(^^;;

Selectionに複数セルが入ってて、ロックしてるセルと、してへんセルが混在しとったら、
Selection.Locked
の戻り値はNullになるんですわ。
NullはFalseとはちゃうから、ご呈示のIf文は実行されへん・・・つまり、なーんも変化せんってことやね。

ま、詳しくはLockedのヘルプを参照してみておくれやす。
ほな。

【68615】Re:ロックされたセル以外のセルの値をク...
質問  ネジクマ  - 11/3/29(火) 21:12 -

引用なし
パスワード
   ▼りん さん:
 ご返事ありがとうございます。教えていただいたコードを入れて実行してみたのですが、「結合されたセルの一部を変更することはできません」とのメッセージが出て止まりました。
 保護しているセルにも、していないセルにも結合しているセルがあります。結合しているとうまくいかないのでしょうか・・・もう少し自分でも調べてみますが、もし解ればよろしくお願いします。


>ネジクマ さん、こんばんわ。
>> そこで以下のようなコードを打ちました。エラーは出ないのですが、何も変化しないようです。どこが間違っているのでしょうか?あるいは全然別の書き方があるのでしょうか?よろしくお願いします。
>
>セルをひとつずつチェックしてみてください。
>
>Sub test()
>  Dim r1 As Range
>  '計算をとめておく
>  Application.Calculation = xlCalculationManual
>  '保護されていないセルならクリア
>  For Each r1 In ActiveSheet.Range("A1:AM1000")
>    If r1.Locked = False Then r1.ClearContents
>  Next
>  '計算再開
>  Application.Calculation = xlCalculationAutomatic
>  Application.Calculate
>End Sub

【68616】Re:ロックされたセル以外のセルの値をク...
お礼  ネジクマ  - 11/3/29(火) 21:46 -

引用なし
パスワード
   ▼bykin さん:
ご返答ありがとうございます。Lockedについて調べてみます。

>こんばんわ。
>
>りんはんに先越されたんで・・・
>なんで、
>
>>エラーは出ないのですが、何も変化しないようです。
>
>になったかの、解説だけ(^^;;
>
>Selectionに複数セルが入ってて、ロックしてるセルと、してへんセルが混在しとったら、
>Selection.Locked
>の戻り値はNullになるんですわ。
>NullはFalseとはちゃうから、ご呈示のIf文は実行されへん・・・つまり、なーんも変化せんってことやね。
>
>ま、詳しくはLockedのヘルプを参照してみておくれやす。
>ほな。

【68617】Re:ロックされたセル以外のセルの値をク...
回答  bykin  - 11/3/29(火) 23:02 -

引用なし
パスワード
   おばんです・・・

>結合しているとうまくいかないのでしょうか

出た!結合セルでっか・・・ホンマこいつには難儀させられまんなー
・・・で、りんはんのコードを拝借したら、こんなんかな?

Sub test()
  Dim r1 As Range
  '計算をとめておく
  Application.Calculation = xlCalculationManual
  '保護されていないセルならクリア
  For Each r1 In ActiveSheet.Range("A1:AM1000")
    If r1.Locked = False Then r1.MergeArea.ClearContents
  Next
  '計算再開
  Application.Calculation = xlCalculationAutomatic
  Application.Calculate
End Sub

試してみてな。
ほな。

【68630】Re:ロックされたセル以外のセルの値をク...
お礼  ネジクマ  - 11/3/31(木) 11:05 -

引用なし
パスワード
   ▼bykin さん:
試してみたらうまくいきました!
頻繁にマクロ作業を行う表などでは、あまり結合セルを使わない方が無難なのでしょうね。
りんさん、bykin さん、ありがとうございました。

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