人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAで元コードの実行は何のエラーもありませんが、
同条件の再利用コードの実行はエラーがでます。

概要は
ピボットででた結果をVBAを使って別シートに貼り替える、
その際ピボット見出しが"(空白)"となっていたらその行を削除する
というものです。

エラー内容は
「ピボットテーブルのレポートの一部を移動したり?できません」ステップインで確認
「Rangeクラスのselectメソッドが失敗しました」ステップインで確認(selectに変えて実験)
「実行時エラー1004 アプリケーション定義エラー、オブジェクト定義エラー」 最終的なエラー


Sub 元コード()
sh.Cells.Clear
Worksheets("やさい").Cells.Copy
sh.Range("A1").PasteSpecial Paste:=xlPasteValues
Maxrow = sh.Cells(Rows.Count, 1).End(xlUp).Row
MaxCol = sh.Cells(2, Columns.Count).End(xlToLeft).Column
For i = 3 To Maxrow
If sh.Cells(i, 1) = "(空白)" Then
Rows(i).Delete
End If
Next i

Sub 元コードの再利用()
sh.Cells.Clear
Worksheets("くだもの").Cells.Copy
sh.Range("A1").PasteSpecial Paste:=xlPasteValues
Maxrow = sh.Cells(Rows.Count, 1).End(xlUp).Row
MaxCol = sh.Cells(2, Columns.Count).End(xlToLeft).Column
For i = 3 To Maxrow
If sh.Cells(i, 1) = "(空白)" Then
Rows(i).Delete
End If
Next i

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

sh にワークシートオブジェクトをセットしてないのではないですか?
sh. の部分を Worksheets("結果を書き出したいシートの名前"). にしてみると動くのではないですか?


匿名回答1号さんのコメント
この質問の続きですね。回答者側の整理のために書いておきます。違ったら言って下さい。 http://q.hatena.ne.jp/1361933377 匿名質問は流れがつかめないので継続する話の場合はフリーのメアドでサブアカウントを使うこと推奨します。

匿名質問者さんのコメント
shについては上記では文字数の関係で記載を省略していますが、 ワークシートオブジェクトをセットしており、 元コードはそれで実際に動いており、 同じ内容を転用した再利用コードがエラーになるという質問です。 お手数ですが何かわかればお願いします。 質問者はリンクの質問者です。 上記

匿名回答1号さんのコメント
>文字数の関係で記載を省略 勝手に省略されると超能力か偶然でもないと無理だと思う。 質問者からの追記とかコメント欄だと長いコードでも書けるので使ってみるといいです。 答えが見つかりそうなら続けて回答するけどわからなかったら何も書きませんってか書けませんので悪く思わないでください。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ