|
▼kanabun さん:
こんばんは。
>いや、たぶん、大丈夫ではないんでしょう。
>グループ番号がA列に書き込まれていなかったり、書き込まれていても 1〜12
>までの「数値」でなかったりすると、
>
>>' 4.グループ番号(1〜12)別に 印刷シート[B8]へ 値のみ転記・印刷する
>> For i = 1 To 12
>> cc.Columns(1).AutoFilter 1, i
>
> ◆↑ ここで、A列に 1〜12 の数値でAutofilterをかけています。
>これが
>A列にグループ番号が書き込まれていなかったり、書き込まれていても 1〜12
>までの「数値」でなかったりすると、何も抽出されず、
>↓次の行のIf分で 「可視行が見出し行を加えて2行以上あれば 印刷する」
>
>> If cc.Columns(1).SpecialCells(xlVisible).Count > 1 Then
>
>という判断をしています。これは、もともと、いつもグループ番号1〜12 に
>対応するデータがあるとは限らないので、あるグループ番号がなければ、
>印刷をスキップするためです。いちども PrintPreview されないということ
>は、1〜12までの番号が [Temp]シートのA列にひとつもない、ということだか
>ら、ではないでしょうか?
>(他にも原因は考えられるかもしれませんが、コードを読んでいて真っ先に
>思いついたのは 上記のAutofilterでキーとなるA列のデータのことでした)
>>' 4.グループ番号(1〜12)別に 印刷シート[B8]へ 値のみ転記・印刷する
>> For i = 1 To 12
>> cc.Columns(1).AutoFilter 1, i
>
> ◆↑ ここで、A列に 1〜12 の数値でAutofilterをかけています。
サンプルのデータでは、12グループではなく5が抜けた11でした。
申し訳りません。
そのため
For i = 1 To 12
For i = 1 To 11
に変更しました。
>なお、
>> shtP.PrintPreview '⇒ 実用時には .PrintOut に変更
>のところを .PrintOut にするのは ちゃんと動くようになって(印刷したい
>内容がプレヴューできるようになって)からでいいですよ。(^^)
>紙がもったいない。
了解です。
>マクロブックの[Temp]シートのA列に書き込むデータは
>同じマクロブックの[List]シートに書いてあるグループ番号リスト(対応表)
>で、グループ番号は従業員番号(?)と対応している --- こういう想定をして
>いましたが、この前提は いまでも有効ですか?
>
>そのあたり、もういちど、[Temp]シート [List]シートを見ながら、チェック
>お願いします。
そうですね、グループ番号は従業員番号に対応しています。
それと…
4.グループ番号(1〜12)別に 印刷シート[B8]へ 値のみ転記・印刷する
For i = 1 To 12
cc.Columns(1).AutoFilter 1, i
If cc.Columns(1).SpecialCells(xlVisible).Count > 1 Then
shtP.[B8:F40].ClearContents '←表罫線範囲クリア
Intersect(cc.Offset(1), cc.Columns("D:H")).Copy
shtP.[B8].PasteSpecial xlValues
の所を
shtP.[B8:F35].Value=""'←表罫線範囲クリア
と変更しました。
理由としましては、[B8:F40]だと
35.AとB列結合で「合計」の文字
37〜39のA列B列結合.「金額差異理由
(名前・差異理由を記入)」
上記の文字が消えてしまう為です。
また、「.ClearContents」のままですと「結合されたセルの一部を変更できません」
とエラーが出てしまいました。
ネット検索すると「.Value=""」でエラーが出ないと載っていたので…
良く理由は分かりませんが(汗
何かおかしな点があればおっしゃっていただければと思います。
その結果、プレビューまで行くことができました!!
そこで質問ですが、プレビューされると印刷範囲が4枚となってしまいます。
1枚で表示させたいのですが、コードでするのはどうすれば良いでしょうか?
(ネットで調べましたが良く分からず…)
A1からK39で表示させたいです。
お忙しい中大変申し訳ありませんが、よろしくお願い致します。
|
|