| 
    
     |  | 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 プロパティに渡す値の種類も分からないのに、なんで継続してレスしない
 のでしょうか ? それから、提示したコードで分からない語句は、ヘルプを調べて
 自分で理解するように習慣づけで下さい。何から何まで人まかせではダメですよ。
 
 |  |