[[20090903081401]] 『自動印刷範囲』(ワクチン接種) ページの最後に飛ぶ

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

 

『自動印刷範囲』(ワクチン接種)
A1からJ500まで罫線が引かれている表があります。
 印刷の際、毎回データの量が変わるので自動でデータ入力行までの印刷範囲を
 設定できないかと模索しているところ
 =OFFSET(受取手形!$A$1,0,0,COUNTA(受取手形!$A:$A),9)という関数に出くわしましたので
 早速設定を行ったところ、データが書かれている最終行の一列手前までしか範囲を選択してくれません。

 このブックはコピーでいろいろ使い回しますし、Excel初心者の方にもつかってもらうため
 できるだけ簡単に作業ができるようにしたいのです。

 A,E,J列にはマクロを入れてます。あと一歩だと思うのですが、皆様、力を貸してください。 
 なおマクロに関しては初心者ですので、既存するマクロ(ここで教えてもらった)とのつなげ方等わかりません。
 よろしくお願いします。

 A列のデータの途中に空白があるのでは?
 
(純丸)(o^-')b

 シートを限定するような判定が必要かどうかわかりませんが
 Thisworkbookモジュールに

  Private Sub Workbook_BeforePrint(Cancel As Boolean)
  With ActiveSheet
    .PageSetup.PrintArea = _
      Application.Intersect(.Columns("A:J"), .Range("A1").CurrentRegion).Address
  End With
  End Sub

 こんな感じでできませんか?
 (momo)

momoさんありがとうございます。
 さっそくThisworkbookモジュールに追加しましたがどうやって動作させるのでしょうか?
 マクロを選択する画面に新しいマクロが追加されてません…。
 お手数ですが、詳しく教えてください。

 純丸さん空白行は一切ありません。

 Private Sub Workbook_BeforePrint
            ~~~~~~~~~~~
 Before …の前に
 Print  プリント

BeforePrint 要するに印刷ボタンを押す前に以下のマクロを設定ということなのでしょうか?
 実際に印刷してみましたが、全ページ出力されて急いで印刷をキャンセルしました。
 momoさんのマクロはI4:I500まで関数を書いている場合には使用不可なのでしょうか?

 数式が入っているのですね・・・
 その場合はダメですね。
 別の方法でもできますので
 そのセルに入っている数式を教えてください。
 (momo)

 たぶん、IFかなんかで""にされていると予測して

  Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Dim LastRow As Long
  With ActiveSheet
    LastRow = .Columns("A:J").Find(What:="*", After:=.Range("A1"), LookIn:=xlValues, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
                MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row
    .PageSetup.PrintArea = "A1:J" & LastRow
  End With
  End Sub

 こんな感じでどうでしょう?
 印刷ではなくて、印刷プレビューでテストしてみてください。
 (momo)

momoさん最高です!非常に感謝しています!!
本当にありがとうございました!!!

このマクロはブック全体に適用されるようですが、シートごとに印刷範囲の列数が変わります。
 その場合はどういうマクロにすればよいですか?
 (ワクチン接種)

 シート全部に適用したいのですか?
 それとも一部のシートのみですか?
 どのようなシートに適用して、どのようなシートに適用しないのか
 またどのようにシートごとに列数が違うのですか?
 規則性はありますか?
 (momo)

Sheet1〜3は必要なし
 Sheet4(出納帳)はA〜G列
 Sheet5(手形開始残高)はH列まで
 Sheet6(受取手形)はJ列まで
 Sheet7(支払手形)はG列まで

 以上です。よろしくお願いします。


 テストしていませんが、こんな感じでどうでしょうか?

  Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Dim LastRow As Long
  Dim Sh As Worksheet
  Dim strColumn As String
  For Each Sh In ActiveWindow.SelectedSheets
    Select Case Sh.Name
      Case "出納帳":       strColumn = "G"
      Case "手形開始残高": strColumn = "H"
      Case "受取手形":     strColumn = "J"
      Case "支払手形":     strColumn = "G"
      Case Else:           Exit Sub
    End Select
    With Sh
      LastRow = .Columns("A:" & strColumn).Find(What:="*", After:=.Range("A1"), LookIn:=xlValues, _
                  LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
                  MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row
      .PageSetup.PrintArea = "A1:" & strColumn & LastRow
    End With
  Next Sh
  End Sub

 (momo)

momoさんたびたびありがとうございました!
 momoさんのおかげで最高の仕上がりとなりました。 本当にありがとうございました!!!

コメント返信:

[ 一覧(最新更新順) ]


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