Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


26379 / 76732 ←次へ | 前へ→

【55684】Re:ActiveWindow.View = xlPageBreakPreviewについて
質問  km  - 08/5/15(木) 20:12 -

引用なし
パスワード
   ハチさん回答ありがとうございます。

>自動改ページで不具合が出たことがありました。
そうなんですか・・・。
今回は強制的に1頁36行に改ページ設定しています。
どうもActiveWindow.View = xlPageBreakPreviewを使用して
プログラムを実行すると、処理時間が約2倍かかります。
同一ブック内のシートのデータをオートフィルターにて順次
抽出し、別シートの印刷用シートへ書き込んでいます。
強制的に改ページを各ページ全てに設定しておけば、
ActiveWindow.View = xlPageBreakPreviewを
使用しなくても不具合は発生しないでしようか?

プログラムは下記の通りです。

・・・・・・・・・・・・・
・・・・・・・・・・・・・
印刷用Sheet.Select

ActiveWindow.View = xlPageBreakPreview

DATA.AutoFilterMode = False 'DATAシートのAutoFilterを解除
DATA.Range("A1").AutoFilter 'DATAシートのAutoFilterを設定

On Error Resume Next
  Range("A3", Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)).SpecialCells(xlCellTypeConstants, 3).ClearContents
On Error GoTo 0

Application.ScreenUpdating = False

Set Rng2 = DATA.Range("K2:K" & DATA.Columns("K").CurrentRegion.Rows.Count)

MyPage = 1
Count = 3

For Each dd In Rng2
  
  DATA.Range("A1").AutoFilter Field:=DATA.Columns(DATA科分類_列).Column, Criteria1:=dd
  
  DATA件数 = Application.Subtotal(3, DATA.Columns(DATA科分類_列)) - 1
  
  With DATA.Range("A1").CurrentRegion.Columns(DATA科分類_列)
    Set CopyRng = .Resize(.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)
  End With
    
  For Each wb In CopyRng
      
    Cells(Count, Columns(印刷用県名_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA県名_列).Column).Value
    Cells(Count, Columns(印刷用科名_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA科名_列).Column).Value
    Cells(Count, Columns(印刷用発行年_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA発行年_列).Column).Value
    Cells(Count, Columns(印刷用免許No_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA免許No_列).Column).Value
    'Cells(Count, Columns(印刷用備考欄_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA備考欄_列).Column).Value
    'Cells(Count, Columns(印刷用県名カナ_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA県名カナ_列).Column).Value
    
    Count = Count + 1
        
    If Count = ActiveSheet.HPageBreaks(MyPage).Location.Row Then
      Range(印刷用科分類_列 & ActiveSheet.HPageBreaks(MyPage).Location.Row - ActiveSheet.HPageBreaks(1).Location.Row + 1) = "【 " & dd & " 】"
      Count = ActiveSheet.HPageBreaks(MyPage).Location.Row + 2
      MyPage = MyPage + 1
    End If
    
  Next
  
  Range(印刷用科分類_列 & ActiveSheet.HPageBreaks(MyPage).Location.Row - ActiveSheet.HPageBreaks(1).Location.Row + 1) = "【 " & dd & " 】"
  Count = ActiveSheet.HPageBreaks(MyPage).Location.Row + 2
  MyPage = MyPage + 1
    
Next
・・・・・・・・・・・・・・・・・・・・・・・・・・

0 hits

【55668】ActiveWindow.View = xlPageBreakPreviewについて km 08/5/15(木) 7:29 質問
【55669】Re:ActiveWindow.View = xlPageBreakPrevi... ハチ 08/5/15(木) 8:51 回答
【55684】Re:ActiveWindow.View = xlPageBreakPrevi... km 08/5/15(木) 20:12 質問
【55700】Re:ActiveWindow.View = xlPageBreakPrevi... ハチ 08/5/16(金) 9:15 発言
【55723】Re:ActiveWindow.View = xlPageBreakPrevi... km 08/5/16(金) 20:10 質問
【55770】Re:ActiveWindow.View = xlPageBreakPrevi... ハチ 08/5/19(月) 9:48 発言
【55836】Re:ActiveWindow.View = xlPageBreakPrevi... km 08/5/20(火) 20:16 お礼

26379 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free