[[20050303150123]] 『VBA:印刷範囲のページ設定されていない列の削除』(miu) ページの最後に飛ぶ

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

 

『VBA:印刷範囲のページ設定されていない列の削除』(miu)

 いつも大変お世話様になっております。

 質問:1つのシートの中にA4サイズ15ページ分の書類の表が入っています。
 現在、使用している表を検索して使用している表だけ印刷範囲のページ設定が
 されるようになっているのですが、ファイルサイズ削減の為印刷範囲外の列を
 自動で(コマンドボタンで)削除したいです。
 印刷範囲のページ設定がされていない列を指定するには具体的にどのようなコードに
 すればいいでしょうか?教えてください。宜しくお願いします。


 >ファイルサイズ削減の為印刷範囲外の列を 自動で(コマンドボタンで)削除
 何故、これがファイルサイズ削減になるのでしょうか?
  
  (INA)

 例えば、2ページ分だけ使用の時いらないページを削除すると300kバイトくらい削減に
 なります。うちの会社ではデータを未だにフロッピーに保存しているおじ様が多いので
 300kバイトも削減できるとかなり助かるのですが・・・。
 判別だけのコードで300kバイトもいってしまうと無駄になってしまいますが・・・。
 ただ、無駄になっても使用する時に使いやすいというのもあるので、削除できると助かります。
 (miu)


 >A4サイズ15ページ分の書類の表
 テンプレートのような使い方をしているブックなのでしょうか?

 列を削除ということは15ページは横方向なのですよね? 
  (INA)


 そうなんです。テンプレートのような表に打ち込んで使用しています。
 すみません、列じゃなくて行でした・・・。
 縦方向にページが連なっています。
 表示を改ページプレビューにしてあって、使用している表はページ数が出て、
 使用していない表は灰色の画面になっています。
 とりあえず、印刷範囲に設定されていない行を判別して削除できればと思います。
 宜しくお願いします。
 (miu)

 すみません!自分で出来ちゃいました!お騒がせ致しました。m(__)m
 表に打込があるかないかを判別して、ActiveSheet.PageSetup.PrintAreaで
 印刷範囲をページ設定してるので、それよりも下の行を削除すればいいだけの話でした・・・。(^^;)

 (miu)


 一応書いたので載せておきます。

 Sub aaaaaaaaaaaaa()
 Dim myArea As String
 Dim r As Range

 With ActiveSheet

    myArea = .PageSetup.PrintArea

    Set r = .Range(myArea).Offset(.Range(myArea).Rows.Count).Cells(1)
    Set r = .Range(r, .Cells.SpecialCells(xlCellTypeLastCell))

    If .Range(myArea).Rows(1).Row = 1 Then
        r.EntireRow.Delete
    Else
        Union(.Range("A1", .Range(myArea).Rows(1).Offset(-1)), r).EntireRow.Delete
    End If

 End With
 End Sub
 

 印刷範囲に設定されている範囲だけ新規シートにコピーして
 もとのシートを削除する方法もあります。

  (INA)

 INAさん、ありがとうございます。
 一応、自分で解決はしたのですが、ページを設定する動作と削除の動作が一緒に
 なってしまう欠点が出てしまったので、INAさんのプログラムを使用させてもらいます。
 INAさんのプログラムを使うとコマンドボタンをわけることができるので非常に助かります。
 また、他でも使用する機会が出てきそうなので勉強になります。ありがとうございました。
 (miu)

コメント返信:

[ 一覧(最新更新順) ]


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