Excel VBA質問箱 IV

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

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


12822 / 13644 ツリー ←次へ | 前へ→

【8440】印刷範囲初期化について End 03/10/17(金) 10:38 質問
【8444】Re:印刷範囲初期化について INA 03/10/17(金) 11:18 回答
【8451】Re:印刷範囲初期化について end 03/10/17(金) 13:42 質問
【8452】Re:印刷範囲初期化について INA 03/10/17(金) 13:51 回答
【8458】Re:印刷範囲初期化について end 03/10/17(金) 14:08 お礼

【8440】印刷範囲初期化について
質問  End  - 03/10/17(金) 10:38 -

引用なし
パスワード
   印刷範囲の初期化について困っております。
ご教授よろしくお願いします。

出力用シートが有り、そのシート内で印刷範囲を設定しています。

 Dim lngtotalcellrow   As Long      'セルの行数を取得
 Dim lngTotalCellColumn As Long      'セルの列数を取得
 
 〜〜略〜〜

 ''セル行数・列数を取得する
 Range("A1", ActiveCell.SpecialCells(xlLastCell)).Select
 lngtotalcellrow = Selection.Rows.Count

 ''印刷範囲設定を行う
 ActiveSheet.PageSetup.PrintArea = "$A$1:$S$" & lngtotalcellrow

 〜〜略〜〜

上記の方法で印刷範囲を設定しています。
出力用シートですので、結果の出力の度に上書きをします。

そこで、100行のデータを出力した後100行未満のデータを出力すると、
100行未満のデータであるにも関わらず、100行まで印刷範囲に
設定されてしまいます。

上書き処理前の、

 Cells.Select
  Selection.PageSetup.PrintArea = ""
  Selection.Delete Shift:=xlUp
  Selection.Clear

など、試してみましたが終端位置のクリアは出来ませんでした。
よろしくお願いします。

【8444】Re:印刷範囲初期化について
回答  INA  - 03/10/17(金) 11:18 -

引用なし
パスワード
   ActiveCell.SpecialCells(xlLastCell)
ではなく、Currentregion や End(xlup).Row で取得してはいかがでしょうか?

【8451】Re:印刷範囲初期化について
質問  end  - 03/10/17(金) 13:42 -

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

>ActiveCell.SpecialCells(xlLastCell)
>ではなく、Currentregion や End(xlup).Row で取得してはいかがでしょうか?

おっしゃるとおり、
CurrentregionやEnd(xlup).Rows.Countでの行数取得という方法もあります。

しかしこの出力シートでは、
列毎に行数が異なり、また連続するデータではないため、
止む得ず、ActiveCell.SpecialCells(xlLastCell)
を使用しております。

有効データ範囲の行数が他の方法で取得出来れば、問題ないと思われます。
説明不足で申し訳ありません。

【8452】Re:印刷範囲初期化について
回答  INA  - 03/10/17(金) 13:51 -

引用なし
パスワード
   こんな感じで印刷対象の列すべてにおいて、
データの最下行を取得して比較しては、いかがでしょう?

dim a as long
for i = 1 to 10
if a < cells(65536,i).End(xlup).Row then
  a = cells(65536,i).End(xlup).Row
end fi
next i


しかし、usedrange(ctrl+End)の不具合の恩恵ですね・・・
Excel2002では解消されてるかな?

【8458】Re:印刷範囲初期化について
お礼  end  - 03/10/17(金) 14:08 -

引用なし
パスワード
   INA さん返信ありがとうございます。

>こんな感じで印刷対象の列すべてにおいて、
>データの最下行を取得して比較しては、いかがでしょう?

やはり、列ごとに計算していく方法しかないようですね。
列ごと最下行を算出していく方法に変更したいと思います。
ありがとうございました。

私の環境はWin2000のExcel2000です。
Excel2002では修正されていると良いですね。

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