システムメンテナンスのお知らせ

お世話になっております。
現在、マクロを作成し、実行すると毎回ある部分で
エラーが生じ、にっちもさっちも行かない状態です。以下の内容を記述してあります。
**********************************************
Sheets("C").Select
Cells.Select
Selection.Copy
Sheets("A").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues
対象列 = InputBox("対象列を入力")
Sheets("A").Select
If 対象列 = "L" Then
Range("L12:L243").Select
Selection.Copy
Sheets("B").Select
ActiveSheet.Unprotect Password:="1111"
  ↓この部分が毎回エラーをおこしています
Range("L12").PasteSpecial Paste:=xlPasteValues
  ↑この部分が毎回エラーを起こしています
ActiveSheet.Protect Password:="1111"
  Application.DisplayAlerts = False
Worksheets("A").Delete
***********************************************
実施したい事は、”A”とあるシートより、シート”B”に値を貼り付けるというものですが、常に貼り付けの部分でエラーが生じております。エラーが生じた際に、表示されるエクセルのヘルプには、以下のような事がかかれているのですが、シートBには値が入力されていないことが原因なのでしょうか?
*****以下エクセルのエラーメッセージ************************
実行時エラー”1004”
RangeクラスのPastespecialメソッドが失敗しました************************
*****以下エクセルのヘルプ内容************************
適用された状況ではメソッドを使用できません。特に、Range オブジェクトの一部のメソッドでは、対象となる範囲にデータが入力されている必要があります。範囲にデータが入力されていない場合は、メソッドの実行に失敗します。

お忙しい所申し訳ありませんが、宜しくお願いいたします。

gooドクター

A 回答 (3件)

Sheets("A").Select


If 対象列 = "L" Then
Range("L12:L243").Select
Selection.Copy
Sheets("B").Select
ActiveSheet.Unprotect Password:="1111"
Range("L12").PasteSpecial Paste:=xlPasteValues
ActiveSheet.Protect Password:="1111"
の部分を
If 対象列 = "L" Then
Sheets("B").Unprotect Password:="1111"
Sheets("A").Range("L12:L243").copy
Sheets("B").Range("L12").PasteSpecial Paste:=xlPasteValues
Sheets("B").Protect Password:="1111"
の様にして下さい。
どうもコピーとペーストのタイミングの様です
    • good
    • 1
この回答へのお礼

ありがとうございます。
つまづいていた部分が解消され、
作業が進展いたしました。

お礼日時:2005/02/23 09:39

#1です、


ActiveSheet.Unprotect と ActiveSheet.Protect
が関係していることは間違いないですが、
#1の指摘は違いますね、忘れて下さい。
    • good
    • 0

ActiveSheet.Unprotect でシートのセレクトが無効になるのだと思います。


順序を変えるか
Sheets("B").Range("L12").PasteSpecial Paste:=xlPasteValues
とすればいいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング