[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『アドバンスドフィルターで抽出すると書式が反映されない?』(なた)
いつも勉強になっております。なたと申します。 題名にもあるのですが、下記の条件で印刷ファイルに設定してある ハズの書式が反映されません。なぜなのでしょうか?
例えば、[ DAT.xls のシート名 DAT ]をテーブルとして、印刷用 ファイル [ RPT.xls のシート名 RPT ]に抽出して、印刷しようと したのですが、抽出はきちんと出来ているのですが、書式(この場 合はフォントサイズ)が反映されていないのです。
印刷用ファイルの全セルをフォントサイズ8に設定して保存しても 抽出後にはもっと大きなフォントで抽出されて、印刷プレビューで はみ出してしまいます。
もしかして抽出したデータは別のシートとかに抽出して、ループと かで書き出さないとだめなのですか(TT)? 教えて下さい。。。
win XP excel2007です。
>データは別のシートとかに抽出して、ループと >かで書き出さないとだめなのですか(TT)?
そうですね!!抽出先を指定しているのですよね!! 新規ブック(Sheet1、Sheet2 というシート名が存在する)にて、 以下のコードを試して比較してください。
標準モジュールに
'========================================================================= Option Explicit Sub test1() Call mk_samp_data(Worksheets("sheet1")) Call pr_sheet_format(Worksheets("sheet2")) MsgBox "ご覧のデータにフィルタをかけます。抽出先は、Sheet2です" With Range("A1:E30") .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "K1:K2"), CopyToRange:=Worksheets("sheet2").Range("a1"), Unique:=False End With End Sub '============================================================================== Sub test2() Dim rng As Range Call mk_samp_data(Worksheets("sheet1")) Call pr_sheet_format(Worksheets("sheet2")) MsgBox "ご覧のデータにフィルタをかけます。抽出先は、Sheet2です" With Range("A1:E30") .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range( _ "K1:K2"), Unique:=False On Error Resume Next Set rng = .SpecialCells(xlCellTypeVisible) If Err.Number = 0 Then rng.Copy Worksheets("sheet2").Range("a1").PasteSpecial xlPasteValues Application.CutCopyMode = False End If .Parent.ShowAllData On Error GoTo 0 End With End Sub '============================================================================== Sub mk_samp_data(sht As Worksheet) With sht With .Range("a1:e1") .Formula = "=""項目"" & column()" .Value = .Value End With With .Range("a2:e30") .Formula = "=int(rand()*10000)+1" .Value = .Value End With .Range("k1:k2").Value = [{"項目1";">4000"}] End With End Sub '============================================================================== Sub pr_sheet_format(sht As Worksheet) sht.Range("a1:e30").ClearContents With sht.Range("a1:e30") .Font.Size = 6 End With End Sub
test1は、AdvancedFilterメソッドで抽出先を指定した例です。 これだと、Sheet2の書式(フォントサイズ)を設定してもSheet1の書式に なってしまいます。つまり、セルごとコピーされている。
test2は、Sheet1にデータを抽出し、Sheet2に値のみの貼付を行っています。 これだとSheet2の書式(フォントサイズ)は、保持されます。
二つを比較してみてください。
ichinose
レスくれてたんですね(TT ありがとうございます。&ごめんなさい。
とてもわかりやすいファイルを作ってくださって 感謝です。大変よくわかりました! さっそく今後はこの手でいきます=!
ichinoseさん ありがとうございまし! なた
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.