[[20040721223014]] 『アプリケーション定義又はオブジェクト定義エラー』(VBA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『アプリケーション定義又はオブジェクト定義エラー』(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)


KAMIYAさん、何とか解決できました。 ありがとうございました。
(VBA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.