[[20170602113533]] 『Range内で計算がしたい』(さっちゃん) ページの最後に飛ぶ

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

 

『Range内で計算がしたい』(さっちゃん)

はじめまして。
マクロを使い始めて1年も経っていない初心者です。

現在、EXCELの改ページ挿入をマクロで設定しようとしています。

複数ページある為、Range内に計算式を入れたところ、
「'Range'メソッドは失敗しました:'Global'オブジェクト」
と出ました。

改ページ処理は、1ページ目と2ページ目のレイアウトが違うため、
1と2ページ目は固定値にしています。
3ページ目以降からは計算により、改ページ挿入をしたいのですが、
何が原因でエラーが出ているのかわかりません。

Range内では計算をすることが出来ないのでしょうか?
また、解決方法をご教授願います。

'改ページ処理
Private Sub PAGE_BREAKS()

 Dim W As Worksheet   
 Dim P As Long        

 Set W = ActiveSheet
 P = 0

 '印刷範囲を設定
 W.PageSetup.PrintArea = "A1:X65536"

 'すべての改ページを解除
 W.ResetAllPageBreaks

 'lngPAGECNT数分、処理を繰り返す
 For P = 1 To lngPAGECNT

   If P = 1 Then
   '1ページ目の場合
      '改ページを追加(水平方向)
       W.HPageBreaks.Add Range("A32")
   Else
      If P = 2 Then
         '2ページ目の場合
            '改ページを追加(水平方向)
            W.HPageBreaks.Add Range("A58")
      Else
         '3ページ目以降の場合
            '改ページを追加(水平方向)
            W.HPageBreaks.Add Range("A & 83 + ((lngPAGECNT-3) * 26) & ")
      End If
   End If

 Next P

End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 直接の回答ではありませんが・・・。

 2013でしたら

 >.PageSetup.PrintArea = "A1:X65536"

 はまずくないですか?
 Cells.Rows.Count
 Cells.Columns.Count
 で行数や列数を取得できます。
 マジックナンバーに頼らないコーディングに努めましょう。
(カリーニン) 2017/06/02(金) 12:05

 全部、まともに読んでいませんが・・・

 > W.HPageBreaks.Add Range("A & 83 + ((lngPAGECNT-3) * 26) & ")

   W.HPageBreaks.Add Range("A" & (83 + (lngPAGECNT-3) * 26))

(半平太) 2017/06/02(金) 12:10


カリーニンさん、
ご指摘、ありがとうございます。

その部分、私も気になっていたので、後々調べようと思っていたところでした。

 >Cells.Rows.Count
 >Cells.Columns.Count
 >で行数や列数を取得できます。

上記の方法でやってみます!
(さっちゃん) 2017/06/02(金) 13:12


半平太さん、
回答、ありがとうございます。

やってみたところ、エラーがなくなりました!
大変、助かりました。

計算式が間違っていたのですね。。
これからは気をつけようと思います。
(さっちゃん) 2017/06/02(金) 13:14


コメント返信:

[ 一覧(最新更新順) ]


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