こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロでロックするとエラーが出る

こんにちは

エクセルマクロでロックをかけるとエラーが出てしまいます。
具体的には↓

Sub tes()
Range("a1:c1").Copy
ActiveWorkbook.Worksheets("Sheet2").Activate
ActiveSheet.Unprotect
'(1)
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial
End Sub

上記のマクロでSheet2にロックをかけるとエラーが起こります。
(1)まではちゃんと行きますし、Sheet2にロックをかけなくても上手く動作します。

原因が思いつかないので、ぜひアドバイスをお願いいたします。

投稿日時 - 2011-04-30 05:37:26

QNo.6703606

すぐに回答ほしいです

質問者が選んだベストアンサー

osarusan0214さん こんにちは。

エラーの原因は「Range("a1:c1").Copy」がリセットされてしまうことです。
「ActiveSheet.Unprotect」を行うと、コピーは解除されます。
よって処理順を変更すれば問題はないと思います。

Sub tes()
 Range("a1:c1").Copy
 ActiveWorkbook.Worksheets("Sheet2").Activate
 ActiveSheet.Unprotect
    ↓
Sub tes()
 Sheets("sheet2").Unprotect
 Range("a1:c1").Copy
 ActiveWorkbook.Worksheets("Sheet2").Activate

投稿日時 - 2011-04-30 08:29:05

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんな具合でも。

sub macro2()
 with worksheets("Sheet2")
  .protect userinterfaceonly:=true
  .range("A" & .range("A65536").end(xlup).row + 1).resize(1, 3).value = range("A1:C1").value
 end with
end sub

投稿日時 - 2011-04-30 09:36:28

お礼

なるほど~
こんな方法もあるんですね~
withを上手に使えるようになりたいですw
アドバイスありでした^^^

投稿日時 - 2011-04-30 13:27:28

ANo.2

ActiveWorkbook.Worksheets("Sheet2").Activate
ActiveSheet.Unprotect
'(1)
Range("a1:c1").Copy
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial

シートの保護を解除したときにコピーされたものが廃棄されてるみたいですので
上記の順番にしてください。

投稿日時 - 2011-04-30 08:37:23

あなたにオススメの質問