Excel VBA質問箱 IV

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

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


6888 / 13644 ツリー ←次へ | 前へ→

【42508】マクロの記録で得たコードをコマンドボタンに貼ったらエラーが出るのですが カド 06/9/13(水) 17:12 質問[未読]
【42509】Re:マクロの記録で得たコードをコマンドボ... Jaka 06/9/13(水) 17:26 発言[未読]
【42511】Re:マクロの記録で得たコードをコマンドボ... カド 06/9/13(水) 17:49 発言[未読]
【42510】Re:マクロの記録で得たコードをコマンドボ... ichinose 06/9/13(水) 17:49 発言[未読]
【42523】Re:マクロの記録で得たコードをコマンドボ... カド 06/9/13(水) 20:47 お礼[未読]

【42508】マクロの記録で得たコードをコマンドボタ...
質問  カド  - 06/9/13(水) 17:12 -

引用なし
パスワード
   マクロの記録で得た以下のコードが有ります。

Sub Macro()
  Rows("1:2").Select
  Selection.Cut
  Sheets("ごみ箱").Select
  Range("A1").Select
  ActiveSheet.Paste
  Sheets("Sheet1").Select
  Selection.Delete Shift:=xlUp
End Sub


これを使い易いようにと、以下のようにコマンドボタンに貼り付けました。
ところが、
「実行時エラー’1004’:
アプリケーション定義またはオブジェクト定義のエラーです。」
と出て動きません。

どうして動かないのでしょうか?

Private Sub CommandButton1_Click()
  Rows("1:2").Select
  Selection.Cut
  Sheets("ごみ箱").Select
  Range("A1").Select    ← ここでエラーが出る
  ActiveSheet.Paste
  Sheets("Sheet1").Select
  Selection.Delete Shift:=xlUp
End Sub

【42509】Re:マクロの記録で得たコードをコマンド...
発言  Jaka  - 06/9/13(水) 17:26 -

引用なし
パスワード
   97得意のえらーかと思ったら、2002でもエラーになっちゃいました。

原因はわかりませんが、これ1行ですみそうです。
Rows("1:2").Cut Sheets("ごみ箱").Range("A1")

【42510】Re:マクロの記録で得たコードをコマンド...
発言  ichinose  - 06/9/13(水) 17:49 -

引用なし
パスワード
   ▼カド さん:
こんばんは。
なるほど・・・。

>マクロの記録で得た以下のコードが有ります。
>
>Sub Macro()
>  Rows("1:2").Select
>  Selection.Cut
>  Sheets("ごみ箱").Select
>  Range("A1").Select
>  ActiveSheet.Paste
>  Sheets("Sheet1").Select
>  Selection.Delete Shift:=xlUp
>End Sub
>
>
>これを使い易いようにと、以下のようにコマンドボタンに貼り付けました。
>ところが、
>「実行時エラー’1004’:
>アプリケーション定義またはオブジェクト定義のエラーです。」
>と出て動きません。
>
>どうして動かないのでしょうか?
>
>Private Sub CommandButton1_Click()
>  Rows("1:2").Select
>  Selection.Cut
>  Sheets("ごみ箱").Select
   msgbox Range("A1").parent.name
'としてみると理由がわかるとおもいますが。
' このRange("A1")は、Me.Range("A1")です。
'よって、Range("a1").Selectがエラーになってしまうのです。
(Selectは、親オブジェクトから順にしなければならないからです)

>  Range("A1").Select    ← ここでエラーが出る
   application.range("a1").select
'とすればエラーは発生せず、意図された動作になると思います。
>  ActiveSheet.Paste
>  Sheets("Sheet1").Select
>  Selection.Delete Shift:=xlUp
>End Sub


試してみてください。

【42511】Re:マクロの記録で得たコードをコマンド...
発言  カド  - 06/9/13(水) 17:49 -

引用なし
パスワード
   ▼Jaka さん レスありがとうございます。
当方Excel2000ですが、Jakaさんの方法でもエラーが出ます。
とりあえず以下の方法だと動きました。

Private Sub CommandButton1_Click()
  Macro
End Sub

【42523】Re:マクロの記録で得たコードをコマンド...
お礼  カド  - 06/9/13(水) 20:47 -

引用なし
パスワード
   ▼ichinose さん 回答ありがとうございます。

確認できました。
ボタンはシートに貼られているので、
そのシートに属しているからそうなるのでしょうね。

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