- ベストアンサー
VBAについて
保護をしているsheetにおいて、保護を解除してコピーをしてまた保護をする マクロを組みたくてマクロの記録でして見て其れを記入したのですが 実行時エラー'424'オブジェクトが必要です。 となります、 どのように記入したら良いでしょうか。 Activsheet.unprotect と記入しています。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 エラーが出てしまったのは、私のコードの記述ミスです。 Workbook("ブック名.xls").Worksheets("シート名").Unprotect を Workbooks("ブック名.xls").Worksheets("シート名").Unprotectに変更してみて下さい。これでエラは解消されると思います。 記述ミスをしてしまい、誠に申し訳ございませんでした。深くお詫び申し上げます。
その他の回答 (6)
- taisuke555
- ベストアンサー率55% (132/236)
kazuhiko5681さんからも出ましたので、そうではないかと思い、少し詳細を #1の補足 >コンパイルエラー subまたわfunctionが定義されていません。 Workbook → Workbooks です。 #2の回答は、多分あっています(試していませんが) #2のエラーは多分、#1の文のWorkSheet()の()内のみ変更したからでは、ないでしょうか。
お礼
本当に有り難うございました、おかげで解決しました、
- kazuhiko5681
- ベストアンサー率49% (79/159)
早速補足いただきまして有難うございます。 taisuke555が書いているように、 Activsheet.unprotect → Activesheet.unprotect と修正してみて下さい。多分うまく動作すると思います。 もし、動かなかった場合は次のことを教えて下さい。 ・プロテクトをはずそうとしているシート名とそのブック名 何とか動作するように一緒に考えていきたいと思います。
補足
有り難うございました、記入ミスでした、 次をお教え下さい、 今度はマクロの終わりで再び保護をしていますが、ここでエラーが出ます、 以下の記述でダメでしょうか、 Activesheet.protect drawingobjects:=true,contents:=true, scenario:=true 2行に書いていますが記述は1行です、
- taisuke555
- ベストアンサー率55% (132/236)
書き間違えでなければ、 Activsheet.unprotect → Activesheet.unprotect ではないですか?
お礼
有り難うございました、私の記述ミスでした、
- kazuhiko5681
- ベストアンサー率49% (79/159)
早速の補足有難うございます。もしよろしければ貴方様の書かれたコードを全部 教えていただけないでしょうか。それを見ないとエラーの出ている原因が特定できません。私でよろしければ、動作するように考えてみたいと思います。 お手数をおかけいたします。よろしくお願いいたします。
補足
Sub harituke() ' ' harituke Macro ' マクロ記録日 : 2002/10/21 ユーザー名 : ' r = MsgBox("1年に1度のクリックです", 1) Select Case r Case 1 activsheet.Unprotect Range("m23").Select Selection.Copy Range("n23").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m24").Select Selection.Copy Range("n24").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m25").Select Selection.Copy Range("n25").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m26").Select Selection.Copy Range("n26").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m27").Select Selection.Copy Range("n27").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False If Range("ap1").Value = Range("ap4").Value Then Range("m23").Select Selection.Copy Range("m50").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False ElseIf Range("ap1").Value = Range("ap5").Value Then Range("m24").Select Selection.Copy Range("m25").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m23").Select Selection.Copy Range("m50").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False ElseIf Range("ap1").Value = Range("ap6").Value Then Range("m25").Select Selection.Copy Range("m26").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m24").Select Selection.Copy Range("m25").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m23").Select Selection.Copy Range("m50").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False ElseIf Range("ap1").Value > Range("ap6").Value Then Range("m25").Select Selection.Copy Range("m26").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m24").Select Selection.Copy Range("m25").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False Range("m23").Select Selection.Copy Range("m50").Select Selection.PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True,contents:=True,Scenario:=True End If Case 2 End Select End Sub '有り難うございます、よろしくお願いします。
- kazuhiko5681
- ベストアンサー率49% (79/159)
おはようございます。 例えば、シート1のA1~D50のデータをコピーしてシート1のE1~H50に張り付け、シート1に保護をかけるとすると、 Workbooks("ブック名.xls").Worksheets(1).Unprotect Workbooks("ブック名.xls").Worksheets(1).range("A1:D50").Copy Destination:=Workbooks("ブック名.xls").Worksheets(1).range("E1:H50") (このコードは1行で書いて下さい。) Workbooks("ブック名.xls").Worksheets(1).Protect これでエラー出ることなく実行できると思います。お試しになってみて下さい。
補足
Activsheet.unprotectの前にダイアログボックスを表示させOKをクリックした時進んで行くようにしておりますがActivsheetの代わりにご教授の通りに記入したら前のsub を認識しないでコンパイルエラー subまたわfunctionが定義されていません。と表示されます。
- kazuhiko5681
- ベストアンサー率49% (79/159)
初めまして。 Workbook("ブック名.xls").Worksheets("シート名").Unprotect これでエラーが出なくなると思います。 お試しになってみて下さい。
補足
Activsheet.unprotectの前にダイアログボックスを表示させOKをクリックした時進んで行くようにしておりますがActivsheetの代わりにご教授の通りに記入したら前のsub を認識しないでコンパイルエラー subまたわfunctionが定義されていません。と表示されます。
お礼
有り難うございました、 回答のNO.5に補足をしましたが、私の記述ミスと分りました、 おかげさまで解決しました、本当に有り難うございました、