[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『アプリケーション定義又はオブジェクト定義エラー』(VBA)
アプリケーション定義又はオブジェクト定義のエラーです。 と出てきます。
Private Sub マクロ_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
k = 0
For i = 1 To 74
For j = 9 To 39
Worksheets(7 + i).Select
Cells(j, 9).Copy
sheets("シート1").Select
Cells(80 - k, j - 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Next j
k = k + 1
Next i
End Sub
どなたかどこが間違っているか教えてもらえませんか。お願いします。
Private Sub なので、シートモジュール、もしくは ユーザーフォームと推測しますが、おそらく、シートモジュールへの 登録ではないかと思います。 「シートモジュールに登録したマクロをVBEから実行しようとしている」 のでは? また、他の部分を指摘します。 シートモジュールでRangeオブジェクトを取得する場合 親オブジェクト(シートオブジェクト)記述を省いた場合は 記述されたシートを暗黙的に親オブジェクトと判断します。 sheets("シート1").Select で他のシート(?)をSelectしていますが、 Cells(80 - k, j - 1).Select ではこのマクロの記述されたシートのセルを取得しに行きます。 ですが、Selectするにはマクロの記述されたシートが アクティブでないといけないのですが、他のシートがアクティブに なっているためSelectできない、というエラー(Rangeクラスの Selectメソッドの失敗)は考えられます。 同じ理由で Worksheets(7 + i).Select Cells(j, 9).Copy の部分も意図しないセル範囲をコピーしているのではないかと 想像します。 これを回避するには親となるオブジェクトの記述が必要です。 コピーの場合はSelectしなくてもよいので、 Worksheets(7 + i).Select Cells(j, 9).Copy ↓ Worksheets(7 + i).Cells(j, 9).Copy (KAMIYA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.