VBA การใช้ pagesetup เพื่อกำหนดพื้นที่พิมพ์ครับ
Posted: Sun Jul 20, 2014 3:08 pm
สวัสดีครับอาจารย์และเพื่อนๆ
จากไฟล์ตัวอย่างมีปุ่ม "ซ่อน/ไม่ซ่อน" เพื่อกำหนดว่าจะให้พิมพ์พื้นที่ออกมาแค่ไหนหลังจากคีย์ข้อมูลครับ การซ่อนและยกเลิกการซ่อนเป็นไปตามต้องการแล้วครับ แต่ว่าพอจะสั่งปริ้นท์ ขนาดหน้ามันไม่ปรับตามพื้นที่ที่มี (ผมตั้งให้พิมพ์คอลัมน์ทั้งหมดภายใน 1 หน้า) เช่น จากไฟล์ตัวอย่าง พอซ่อนแล้วจะเห็นคอลัมน์ A - N เวลาสั่งปริ้นท์ก็น่าจะขยายช่วงข้อมูลดังกล่าวให้เต็มหน้า แต่ก็ไม่เป็นเช่นนั้น ผมต้องปรับโค้ดอย่างไรครับ
โค้ดที่เขียนไว้ครับ อยู่ที่ Procedure
ขอบพระคุณครับ
จากไฟล์ตัวอย่างมีปุ่ม "ซ่อน/ไม่ซ่อน" เพื่อกำหนดว่าจะให้พิมพ์พื้นที่ออกมาแค่ไหนหลังจากคีย์ข้อมูลครับ การซ่อนและยกเลิกการซ่อนเป็นไปตามต้องการแล้วครับ แต่ว่าพอจะสั่งปริ้นท์ ขนาดหน้ามันไม่ปรับตามพื้นที่ที่มี (ผมตั้งให้พิมพ์คอลัมน์ทั้งหมดภายใน 1 หน้า) เช่น จากไฟล์ตัวอย่าง พอซ่อนแล้วจะเห็นคอลัมน์ A - N เวลาสั่งปริ้นท์ก็น่าจะขยายช่วงข้อมูลดังกล่าวให้เต็มหน้า แต่ก็ไม่เป็นเช่นนั้น ผมต้องปรับโค้ดอย่างไรครับ
โค้ดที่เขียนไว้ครับ อยู่ที่ Procedure
Hidden_toggleCode: Select all
Public Sub Hidden_toggle()
Dim i As Integer, j As Integer
Dim lLastRow As Long
Dim rPntAR As Range
Application.ScreenUpdating = False
With ActiveSheet
.Unprotect
For i = 11 To 26 Step 3
If .Cells(4, i).Value > 0 Then j = i + 1
Next i
lLastRow = .Range("a" & Rows.Count) _
.End(xlUp).Offset(1, 0).Row
If .Columns(26).Hidden = True Then
.Range(.Columns(12), .Columns(26)).Hidden = False
.PageSetup.PrintArea = .Range("a1").Address(0, 0) & ":" & _
.Range("z" & lLastRow).Address(0, 0)
Else
.Range(.Columns(j), .Columns(26)).Hidden = True
.PageSetup.PrintArea = .Cells(1, 1).Address(False, False) & ":" & _
.Cells(lLastRow, j - 1).Address(False, False)
End If
.Protect
.EnableSelection = xlUnlockedCells
End With
End Sub