• 締切済み

EXCEL2007で改ページを見やすく

EXCEL2007で教えてください。 たとえば、こんなシートがあります。 1行目 本年売上 2行目 前年売上 3行目 前年比 4行目 予算 この、4行が「1セット」になっています。 印刷する場合に、ページは「自動的に改行」されてしまいます。 → 3行目と 4行目の間で改行される等 これはちょっとブサイクです。 改行がある場合は、この4行が同じページに入るようにする方法はありますでしょうか?

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 VBAでも、なかなか難しいです。 今回のコードは、過去の遺産のコードを元にして作られたもので、Ver4Macro関数を使用しています。Excel 2007 では稼動しますが、Excel 2010 では稼動しないように聞いております。Match 関数を新たに作りましたが、ワークシート関数ですと、揺れ動く記述の場合、ヒットするかどうか微妙です。VBA関数なら、ある程度は調整することは可能です。順番が狂ったら、「手動改行」の位置は狂います。なお、現在は曖昧一致の検証はされていません。 標準モジュールに貼り付け、コマンド・ボタンで呼び出し(Call)したりすればよいと思います。 '------------------------------------------- Sub PageBreaksAdjustments()   'Excel 2010では、作動しません。   Dim dPNum As Long   Dim TotalPage As Long   Dim iP As Long   Dim i As Long, j As Long   Dim myData As Variant   '-------------------------------------------   'ユーザー設定   'カンマ(,)区切りで、空白のないようにリストに入れてください。   Const MYLIST As String = "本年売上,前年売上,前年比,予算"   '-------------------------------------------   myData = Array(MYLIST)      Application.ScreenUpdating = False   With ActiveSheet     If .PageSetup.PrintArea = "" Then       MsgBox "印刷範囲を設定してください。", vbInformation       Exit Sub     End If     .ResetAllPageBreaks     TotalPage = Application.ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(64))")     dPNum = Application.ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64),0,1)")     For i = 1 To TotalPage       If i = 1 Then         iP = i * dPNum       Else         iP = iP + dPNum       End If       j = VBA_MATCH(.Cells(iP - 1, 1).Value, myData, False)       If IsError(j) Then Exit Sub       If j <> 4 Then         .Cells(iP - j, 1).PageBreak = xlPageBreakManual         iP = iP - j       End If     Next i   End With   Application.ScreenUpdating = True End Sub Function VBA_MATCH(ByVal SearchTxt As String, ArrayData As Variant, Optional Opt As Boolean = False) 'SearchText:検索値, BaseArray():配列データ, Opt. False;絶対一致.True:曖昧一致 Dim sOpt As String Dim i As Variant Dim L As Long Dim U As Long Dim flg As Boolean  If Opt = False Then   sOpt = "*"  L = LBound(ArrayData)  U = UBound(ArrayData)   For i = L To U    If Opt = False Then     If StrComp(SearchTxt, Trim(ArrayData(i)), vbTextCompare) = 0 Then       Exit For     End If     Else     If ArrayData(i) Like SearchTxt & sOpt Then       If flg = False Then        flg = True       End If     Else       i = i - 1       Exit For     End If     End If   Next i  End If  If i > U Then   i = CVErr(xlErrNA)  Else   i = i + 1 - L  End If  VBA_MATCH = i End Function

  • suzusan7
  • ベストアンサー率64% (22/34)
回答No.4

こんばんわぁ お望みのことを行うにはVBAが必要になると思います。 2007は持ってないのですが、2002で同様のVBAが動作していたので 2007でもVBAでできるのではないでしょうか? VBAの考え方としては、 1.全ての改ページを解除する。 2.自動改ページを上から順番に条件の合うように   設定していく。 3.上記2をデータの印刷範囲の最下行まで続ける 程度でできると思います。 全ての改ページを解除した段階で、設定されている印刷環境(用紙方向や印刷範囲)や 行見出し等を考慮した自動改ページとなりますので、 各PC毎に、または用紙方向やサイズの変更、プリンタの変更の都度、 VBAを実行する必要があるかもしれませんが、プリンタの違いによる影響はないと思います。 今のところ、3種類のプリンタでですが、問題なく動作していました。 また、用紙方向を変えた後や、行見出しを追加した後でもVBAを実行すると その用紙に合っていて、行見出しも反映された改ページになっていました。

回答No.3

hot0500さん 今日は! ■Excel2007基本講座:改ページと改ページプレビュー↓ http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-print6.html 内容:1.改ページを設定する・2.改ページプレビュー (参照下さい) 改ページを設定する→途中でページを変えたい時に改ページを設定します。改ページは次のページの先頭部分で設定します。 改ページプレビュー→改ページプレビューでは改ページの状態を確認することと改ページ位置を変更することができます。 ステータスバーの[改ページプレビュー]を実行します。

  • takasuga
  • ベストアンサー率37% (231/612)
回答No.2

なんらかの方法で自動調整できたとしても、プリンタが変われば印刷範囲が変わりますし無理でしょうね。 そもそもExcelは表計算ソフトなので、印刷まで面倒を見てくれるソフトではありません。

  • takasuga
  • ベストアンサー率37% (231/612)
回答No.1

[表示]タブにある[改ページプレビュー]を使用して調整することになります。

hot0500
質問者

補足

ありがとうございます。 プレビューで調整をやっていますが、これはかなり面倒な作業なのです。 なんらか自動的にできる方法はないかと思いまして質問したわけなのです・・・

関連するQ&A

専門家に質問してみよう