[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『表示列のみでの行のAutoFit』(ひでん)
A B C ------------------------- 1 あ あ あ あ ------------------------- 2 い い い い ------------------------- 3 う ------------------------- 上記のような表でB列を非表示した時に行の自動調整をすると
A C ------------------------ 1 あ あ
------------------------ 2 い い い ------------------------ 3 う ------------------------ になります。
A C ---------------- 1 あ あ ---------------- 2 い い い ------------------- 3 う -------------------
上記のように1行目の高さが表示列だけの内容でAUTOFITさせる方法はありますか? 非表示の列の内容を判断させたくありません。 行と列が非常に多いため、最低限の列の表示で印刷したいのですが、1行の幅が無駄に広いため紙を多量に使用します。 そのため、非表示の列の内容は無視し、表示列の分だけの内容でAUTOFITしたいのです。 よろしくお願いします。Xp,2003を使っています。
列を非表示にする前に、 当該列のセルの書式(配列)を 「折り返して全体を表示」にしない設定したらどうですか?
※いちいち設定したり、元の書式に戻したりするのは面倒なので、 マクロの活用も考慮に入れる必要があるかも知れませんけど。
(半平太) 2013/10/05(Sat) 19:49
>当該列のセルの書式(配列)を ↓ 訂正 m(__)m 当該列のセルの書式(配置)を
新しいシートを作成し、シート名を 印刷 として、ThisWorkbook に下記のコードを シート・ブックの保護は無い前提ですけど^ シートSheet1 又は Sheet3 から印刷シートを選択した場合にコピーされます。 ’「ThisWorkbook」
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Dim i As Long
If ActiveSheet.Name = "印刷" Then If UBound(Filter(Array("Sheet1", "Sheet3"), Sh.Name, True)) = 0 Then 'Array()指定シートにする
Application.ScreenUpdating = False Application.DisplayAlerts = False Application.EnableEvents = False Cells.Delete Sheets(Sh.Name).Copy after:=Sheets("印刷") Columns.EntireRow.AutoFit Range("A1:" & Cells.SpecialCells(xlCellTypeLastCell).Address).Value = Range("A1:" & Cells.SpecialCells(xlCellTypeLastCell).Address).Value
For i = Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1 If Columns(i).Hidden Then Columns(i).Delete Next i
Sheets("印刷").Delete ActiveSheet.Name = "印刷" Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True
End If End If End Sub (初)
茶々入れすみません。 AutoFit するなら列削除の後の方がよさそうな。 (Mook)
Mookさんありがとうございます。 <AutoFit するなら列削除の後の方がよさそうな。 その通りでした^^ Next i後にColumns.EntireRow.AutoFitするべきでですね。 (初)
>マクロで印刷用のシートを作成しAutoFitするしかないのですね。 「しかない」って、私のアイデアはどう評価されたんでしょうか?
>非表示の状態でAutoFitさせたいのですが・・・ 始めから非表示になっている、と云うのがネックなんですか?
Sub UnwrapBeforePrint() '印刷前に非表示列は折り返しを解除する Wrapping AfterPrint:=False End Sub
Sub WrapAfterPrint() '印刷後は非表示列を折り返しに戻す) Wrapping AfterPrint:=True End Sub
Sub Wrapping(AfterPrint As Boolean) Const shNameToProc As String = "Sheet1" Dim cols As Range
With Sheets(shNameToProc).UsedRange For Each cols In .Columns If cols.Hidden Then cols.WrapText = AfterPrint End If Next .Rows.AutoFit End With End Sub
(半平太) 2013/10/07(Mon) 19:22 →22:08 冗長だったので全面差替えにしました
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.