
・Sheet3 を Sheet2 へコピーし、Sheet2 へ改ページを挿入するマクロを作りました。
しかしこの改ページ処理
ws_sheet2.Cells(idx_sentou + 1, 1).PageBreak = xlManual
を実行すると以下のエラーが発生します。
実行時エラー '1004':
Range クラスの PageBreak プロパティを設定できません。
不思議なことに、デバッグウィンドウを表示しF5で実行すると、上記のエラーは発生しません。
・以下の条件下で発生する事が判明しています。
EXCEL2010、他のバージョンでは試していません。
Sheet1 へ図形を貼り付け、そこへマクロはを登録し実行しています。
Sheet2 は[改ページプレビュー]です、[標準]ビューではエラーになりません。
Sheet2 の全てのセルを削除した状態でのみ発生し、1行でもセルが存在する場合には発生しません。
※具体的には Sheet2 の "A1"セルにカーソルがある状態で、CTRL + SHIFT + END で全セルを選択後、右クリックより削除(D)でセルを削除。
・どうかご教授の程、宜しくお願い致します。
・マクロ
Sub Macro1()
Dim ws_sheet2 As Object
Dim ws_sheet3 As Object
Dim idx_sentou As Long
'* ワークシート変数の設定
Set ws_sheet2 = Worksheets("Sheet2")
Set ws_sheet3 = Worksheets("Sheet3")
'* インデックスの設定
idx_sentou = 10
'* sheet2 の初期クリア
ws_sheet2.Range("A1:P999").Clear
'* sheet2 の改ページをクリア
ws_sheet2.ResetAllPageBreaks
'* sheet3 を sheet2 へコピー
'* ※sheet3には書式が設定されており、その書式を sheet2 へコピーする為
ws_sheet3.Range("1:10").Copy
ws_sheet2.Range("1:10").PasteSpecial Paste:=xlPasteAll
'* sheet2 をクリア
ws_sheet2.Cells(1, 1).Resize(9, 4).Value = ""
'* sheet2 を編集
ws_sheet2.Cells(10, 1).Value = "XXXXXXXX"
'* 改ページの挿入
ws_sheet2.Cells(idx_sentou + 1, 1).PageBreak = xlManual
End Sub
No.1ベストアンサー
- 回答日時:
2003でも発生しますね。
[改ページプレビュー]時の描画関係で何か不具合があるのかもしれません。
#タイミングの問題?
解消策としては
・一旦[標準]ビューで処理し、最後に[改ページプレビュー]設定する。
・ws_sheet2をActiveにして実行する。
・'* 改ページの挿入の直前に DoEvents を挿入する。
・Application.ScreenUpdating = False で実行する。
いずれでも解消するようです。
以下余談、ちょっと気になったこと。
>ws_sheet3.Range("1:10").Copy
>ws_sheet2.Range("1:10").PasteSpecial Paste:=xlPasteAll
xlPasteAllなら
ws_sheet3.Range("1:10").Copy ws_sheet2.Range("1:10")
でもいいかな、という点と
>'* sheet2 をクリア
なら
ws_sheet2.Cells(1, 1).Resize(9, 4).ClearContents
のほうがいいかな、という点です。参考まで。
早速の回答と、丁寧な説明、自環境で再現テストまでしていただき、
本当にありがとうございました。
>>・一旦[標準]ビューで処理し、最後に[改ページプレビュー]設定する。
(;^_^A アセアセ・・・、ご指摘を受ける前にこの方法に気付くべきですよね...
この事象は質問を書いている途中で気が付き、
そこまで頭がまわりませんでした。
→解消いたしました
>>・ws_sheet2をActiveにして実行する。
ws_sheet2.Activateを挿入しOKでした。
→解消いたしました
ただ、オリジナルのソースの方でも既にActivateは試していたのですが
、そちらは何故かNG、もっと複雑なソースなので別要因かもしれません。
>>・'* 改ページの挿入の直前に DoEvents を挿入する。
→解消いたしました
>>・Application.ScreenUpdating = False で実行する。
こちらの環境ではNGでした。
Application.ScreenUpdating = False
'* 改ページの挿入
ws_sheet2.Cells(idx_sentou + 1, 1).PageBreak = xlManual
Application.ScreenUpdating = True
>>ws_sheet3.Range("1:10").Copy ws_sheet2.Range("1:10")
>>でもいいかな、という点と
VB ならまだしも VBA となるとまるで素人で、よくわからず
作っております、ご指摘の通りに修正しました。
>>ws_sheet2.Cells(1, 1).Resize(9, 4).ClearContents
>>のほうがいいかな、という点です。参考まで。
同じく、ご指摘の通りに修正しました。
こう言うアドバイスって素人には本当に助かります。
最終的には DoEvents 使用し解決とさせていただきました。
なにはともあれ、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBA Range クラスの PageBreak プロパティを設定できません。
Visual Basic(VBA)
-
Excel 改ページのVBAうまくいかないです
Excel(エクセル)
-
ExcelVBA 改ページの横破線を消す方法
Excel(エクセル)
-
-
4
EXCEL、マクロ-改ページ行番号の取得方法を教えてください
Visual Basic(VBA)
-
5
Excelのマクロで実行時エラー”1004”を解決するには?
その他(データベース)
-
6
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
7
VBAの改ページ設定について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PageBreak プロパティを設定で...
-
セル入力文字が、「右のセルに...
-
エクセル、ページをまたがった...
-
エクセルでセルの中の文字が削...
-
Word2016でExcelデータを差込し...
-
あるセルに色を付けた時、別の...
-
パワーポイントの表
-
エクセルで知らない間に行がず...
-
Excelのセル内の文字の頭に半角...
-
パワポの複数ページにまたがる...
-
ワードの表の行が広がってしまう
-
Wordで、表のセルが変なところ...
-
ワードの文章囲み枠(?)を消...
-
エクセルの一つのセル内に2つの...
-
エクセル2010で、結合したセル...
-
Excelの表をWordにリンク...
-
【Excel VBA】CSV取込時、数字...
-
ワードの表がくっついてしまいます
-
表と票の違いは?
-
ワードの表を図にして、ワード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの日付について教えて...
-
PageBreak プロパティを設定で...
-
エクセルVBA 図形の選択法は?
-
顧客ごとに違う点検案内を作成...
-
VBA 選択したセルが空白であっ...
-
EXCEL VBAがうまく動きません。
-
TextBoxにExcelの背景色を取得
-
(VBA)指定したセルがアクティブ...
-
【Excel VBA】Caseマクロを簡潔...
-
マクロでの並び替え
-
Excelマクロ
-
Excelの最終列までの転記について
-
ワードで勝手に点線ラインがでる
-
セル入力文字が、「右のセルに...
-
エクセル、ページをまたがった...
-
パワーポイントの表
-
パワポの複数ページにまたがる...
-
ワードの文章囲み枠(?)を消...
-
Word2016でExcelデータを差込し...
-
あるセルに色を付けた時、別の...
おすすめ情報