|
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=18301;id=excel
↑この回答にレスつければいいのに、なんで自己流のコードにして躓いて別のスレを
立てるのかね・・。回答に書いたように、それではうまく印刷範囲を設定できなかった
のです。理屈がどうとかいうことでなく、実際にテストしてみて分かったことだから、
わざわざ別の方法を考え、提示しているのです。まずそのやり方についてレスするのが
先じゃないの ?
方法はコードを見てのとおり、印刷専用のシートを作ることですが、これが一番確実
なやり方なのです。さらに1ページにかっちり収めたいなら
Sub MySheet_Print()
Dim PArea As Range
Dim Sh As Worksheet
Dim Ans As Integer
If Hck = False Then Exit Sub
Set PArea = Range("B1", Range("B65536").End(xlUp)) _
.Offset(, -1).Resize(, 5).SpecialCells(12)
On Error Resume Next
Set Sh = Worksheets("MyPrint")
If Err.Number > 0 Then
Set Sh = Worksheets _
.Add(After:=Worksheets(Worksheets.Count)).Name = "MyPrint"
Err.Clear
End If
Sh.Activete: Cells.Clear
PArea.Copy Sh.Range("A1")
ActiveSheet.PageSetUp.PrintArea = _
Range("A1").CurrentRegion.Address
Set PArea = Nothing: Set Sh = Nothing
Ans = MsgBox("印刷を開始しますか", 36)
If Ans = 6 Then ActiveSheet.PrintOut Copies:=1
End Sub
と、印刷範囲を設定するコードを追加したら良いのです。
PrintArea プロパティに渡す値の種類も分からないのに、なんで継続してレスしない
のでしょうか ? それから、提示したコードで分からない語句は、ヘルプを調べて
自分で理解するように習慣づけで下さい。何から何まで人まかせではダメですよ。
|
|