code in giấy ngang (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Rùa Con 1080

Thành Viên Sao Chép 2
Tham gia
4/5/16
Bài viết
351
Được thích
47
Giới tính
Nữ
Chào mọi người!
Em có đoạn code của AC trên DD giúp cho khi nhấn vào thì in(PrintOut)
Mã:
With Worksheets("Bao cao").PageSetup
 .PrintTitleRows = "$1:$4"
 .PrintTitleColumns = "$A:$G"
End With
    Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
nhưng khi in là in theo mặc định giấy khổ đứng.
Mong các AC giúp cho một nút để tùy chọn khổ giấy là ngang hay đứng.
Thân chào.
 
In khổ ngang hay khổ dọc là định dạng trong page setup chứ ko liên quan gì đến code cả bạn nhé!
 
Upvote 0
Chào mọi người!
Em có đoạn code của AC trên DD giúp cho khi nhấn vào thì in(PrintOut)
Mã:
With Worksheets("Bao cao").PageSetup
 .PrintTitleRows = "$1:$4"
 .PrintTitleColumns = "$A:$G"
End With
    Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
nhưng khi in là in theo mặc định giấy khổ đứng.
Mong các AC giúp cho một nút để tùy chọn khổ giấy là ngang hay đứng.
Thân chào.
Bạn thử:
PHP:
Sub Select_abc()
    Dim a As String
    a = MsgBox("Chon trang ngang hay doc", vbYesNoCancel, "Thong bao")
    If a = vbYes Then
        ActiveSheet.PageSetup.Orientation = xlPortrait    ' doc
        'ActiveWindow.SelectedSheets.PrintOut
        ActiveWindow.SelectedSheets.PrintPreview
    ElseIf a = vbNo Then
        ActiveSheet.PageSetup.Orientation = xlLandscape    ' ngang
        'ActiveWindow.SelectedSheets.PrintOut
        ActiveWindow.SelectedSheets.PrintPreview
        Exit Sub
    End If
End Sub
 
Upvote 0
Cám ơn bạn phulien1902.
Bạn phulien1902 có thể chèn vào đoạn code của mình được không vậy.
Mình chả rành VBA cho lắm. Mình xin đưa nguyên code của nút In:
Mã:
Private Sub cmd_in6_Click()
Dim Arr, rng As Range, r As Long, c As Long
    r = Worksheets("Bao cao").Range("A65536").End(xlUp).Row

        With Worksheets("Bao cao").Range("A5:G" & r)
            .ClearContents
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        End With
    End If

    Worksheets("Bao cao").Range("D2").Value = cb_thang6.Value
    Arr = ListBox7.List
    ReDim Preserve Arr(LBound(Arr) To UBound(Arr), LBound(Arr, 2) To ListBox7.ColumnCount - 1)

    For r = LBound(Arr) To UBound(Arr)
        For c = LBound(Arr, 2) + 3 To UBound(Arr, 2)
            Arr(r, c) = CDbl(Arr(r, c))
        Next
    Next

    With Worksheets("Bao cao").Range("A5").Resize(UBound(Arr) - LBound(Arr) + 1, UBound(Arr, 2) - LBound(Arr, 2) + 1)
        .Value = Arr
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    'Worksheets("Bao cao").Range("A2").Resize(UBound(Arr) - LBound(Arr) + 4, UBound(Arr, 2) - LBound(Arr, 2) + 1).Columns.AutoFit
'    in bao cao
With Worksheets("Bao cao").PageSetup
 .PrintTitleRows = "$1:$4"
 .PrintTitleColumns = "$A:$G"
End With
    Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
End Sub
Mong bạn chèn vào code In dùm mình, khi nhấn nút In thì hiện MsgBox chọn khổ giấy, nếu chọn khổ giấy ngang thì in ngang, nếu chọn khổ giấy đứng thì in đứng.
Cám ơn bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Code không phải do mình viết, mà là của một "Tiền Bối" viết dùm. MÌnh chả biết tí gì về code. Mình hiểu nom na là lấy dữ liệu từ ListBox7 đập vào Sheet"Bao cao" rồi mới in đó bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Toàn là các AC trên DD làm dùm em thôi, em không biết nên em mới hỏi tới 40 lần đấy Anh befaint.
Mong Anh và mọi người giúp em với.
 
Upvote 0
Mong cácAC giúp em với.
Em thử code của bạn phulien1902 thì bị lỗi.
 
Upvote 0
Em có them vào code:
Mã:
'    in bao cao
With Worksheets("Bao cao").PageSetup
.Orientation = xlLandscape 
.PrintTitleRows = "$1:$4"
.PrintTitleColumns = "$A:$G"
End With
    Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
nhưng bị lỗi "438" "Object doesn't support this property or method"
Mong các AC giúp đỡ.
 
Upvote 0
Cám ơn bạn phulien1902.
Bạn phulien1902 có thể chèn vào đoạn code của mình được không vậy.
Mình chả rành VBA cho lắm. Mình xin đưa nguyên code của nút In:
Mã:
Private Sub cmd_in6_Click()
Dim Arr, rng As Range, r As Long, c As Long
    r = Worksheets("Bao cao").Range("A65536").End(xlUp).Row

        With Worksheets("Bao cao").Range("A5:G" & r)
            .ClearContents
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        End With
    End If

    Worksheets("Bao cao").Range("D2").Value = cb_thang6.Value
    Arr = ListBox7.List
    ReDim Preserve Arr(LBound(Arr) To UBound(Arr), LBound(Arr, 2) To ListBox7.ColumnCount - 1)

    For r = LBound(Arr) To UBound(Arr)
        For c = LBound(Arr, 2) + 3 To UBound(Arr, 2)
            Arr(r, c) = CDbl(Arr(r, c))
        Next
    Next

    With Worksheets("Bao cao").Range("A5").Resize(UBound(Arr) - LBound(Arr) + 1, UBound(Arr, 2) - LBound(Arr, 2) + 1)
        .Value = Arr
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    'Worksheets("Bao cao").Range("A2").Resize(UBound(Arr) - LBound(Arr) + 4, UBound(Arr, 2) - LBound(Arr, 2) + 1).Columns.AutoFit
'    in bao cao
With Worksheets("Bao cao").PageSetup
 .PrintTitleRows = "$1:$4"
 .PrintTitleColumns = "$A:$G"
End With
    Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
End Sub
Mong bạn chèn vào code In dùm mình, khi nhấn nút In thì hiện MsgBox chọn khổ giấy, nếu chọn khổ giấy ngang thì in ngang, nếu chọn khổ giấy đứng thì in đứng.
Cám ơn bạn.
Gửi luôn form có code đi bạn, coi thì thấy nó chỉ cho bạn xem trc rồi muốn in hay k. Còn nội dung form có gì thì sao.
Ví dụ
Mã:
Private Sub cmd_in6_Click()
Inan sheets("bao cao")
End Sub
Vậy thôi thì sao. Đố bạn biết code xử lý thế nào.
Với lại cái này tôi thấy chắc chỉ cần ghi macro thôi là ra.
Bạn thông cảm, đang sốt nói chuyện hơi lung tung.
 
Upvote 0
Dạ trong Form chỉ có : 1 combobox (cb_thang6) 1 commandbutton (cmd_in6) vào 1 listbox (listBox7)
Khi chọn giá trị trong cb_thang6 thì sẽ gán dữ lieu vào Listbox7 (có 7 cột) và nhấn nút In (cmd_in6) thì đập dữ lieu của ListBox7 váo Sheet"Bao cao" từ A5:G và Border, còn Sheet"Bao cao"!(D2) thì bằng giá trị của cb_thang6.
Nhưng khi in thì mặc định in là giấy dọc, mà có tới 7 cột nên in không vừa,nên em muốn code chuyển từ giấy dọc qua giấy ngang (chứ không vào Pagesetup của excel đê chuyển)
Mong mọi người xem giúp.
 
Upvote 0
Dạ trong Form chỉ có : 1 combobox (cb_thang6) 1 commandbutton (cmd_in6) vào 1 listbox (listBox7)
Khi chọn giá trị trong cb_thang6 thì sẽ gán dữ lieu vào Listbox7 (có 7 cột) và nhấn nút In (cmd_in6) thì đập dữ lieu của ListBox7 váo Sheet"Bao cao" từ A5:G và Border, còn Sheet"Bao cao"!(D2) thì bằng giá trị của cb_thang6.
Nhưng khi in thì mặc định in là giấy dọc, mà có tới 7 cột nên in không vừa,nên em muốn code chuyển từ giấy dọc qua giấy ngang (chứ không vào Pagesetup của excel đê chuyển)
Mong mọi người xem giúp.
Mã:
Private Sub cmd_in6_Click()
Dim Arr, rng As Range, r As Long, c As Long
   r = Worksheets("Bao cao").Range("A65536").End(xlUp).Row

       With Worksheets("Bao cao").Range("A5:G" & r)
           .ClearContents
           .Borders(xlDiagonalDown).LineStyle = xlNone
           .Borders(xlDiagonalUp).LineStyle = xlNone
           .Borders(xlEdgeLeft).LineStyle = xlNone
           .Borders(xlEdgeTop).LineStyle = xlNone
           .Borders(xlEdgeBottom).LineStyle = xlNone
           .Borders(xlEdgeRight).LineStyle = xlNone
           .Borders(xlInsideVertical).LineStyle = xlNone
           .Borders(xlInsideHorizontal).LineStyle = xlNone
       End With
   End If

   Worksheets("Bao cao").Range("D2").Value = cb_thang6.Value
   Arr = ListBox7.List
   ReDim Preserve Arr(LBound(Arr) To UBound(Arr), LBound(Arr, 2) To ListBox7.ColumnCount - 1)

   For r = LBound(Arr) To UBound(Arr)
       For c = LBound(Arr, 2) + 3 To UBound(Arr, 2)
           Arr(r, c) = CDbl(Arr(r, c))
       Next
   Next

   With Worksheets("Bao cao").Range("A5").Resize(UBound(Arr) - LBound(Arr) + 1, UBound(Arr, 2) - LBound(Arr, 2) + 1)
       .Value = Arr
       .Borders(xlEdgeLeft).LineStyle = xlContinuous
       .Borders(xlEdgeTop).LineStyle = xlContinuous
       .Borders(xlEdgeRight).LineStyle = xlContinuous
       .Borders(xlEdgeBottom).LineStyle = xlContinuous
       .Borders(xlInsideVertical).LineStyle = xlContinuous
       .Borders(xlInsideHorizontal).LineStyle = xlContinuous
   End With
   'Worksheets("Bao cao").Range("A2").Resize(UBound(Arr) - LBound(Arr) + 4, UBound(Arr, 2) - LBound(Arr, 2) + 1).Columns.AutoFit
'    in bao cao
With Worksheets("Bao cao").PageSetup
'.Orientation = xlLandscape ' giay ngang
'.Orientation = xlPortrait'giay doc
 .PrintTitleRows = "$1:$4"
 .PrintTitleColumns = "$A:$G"
End With
Select_abc
   Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
End Sub
Private Sub Select_abc()
    Dim a As String
    a = MsgBox("Chon trang ngang hay doc", vbYesNoCancel, "Thong bao")
    If a = vbYes Then
        ActiveSheet.PageSetup.Orientation = xlPortrait    ' doc
        'ActiveWindow.SelectedSheets.PrintOut
        ActiveWindow.SelectedSheets.PrintPreview
    ElseIf a = vbNo Then
        ActiveSheet.PageSetup.Orientation = xlLandscape    ' ngang
        'ActiveWindow.SelectedSheets.PrintOut
        ActiveWindow.SelectedSheets.PrintPreview
        Exit Sub
    End If
End Sub
hi vọng là đúng ý, code của phulien1902
 
Upvote 0
Em có them vào code:
' in bao cao
With Worksheets("Bao cao").PageSetup
.Orientation = xlLandscape
.PrintTitleRows = "$1:$4"
.PrintTitleColumns = "$A:$G"
End With
Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut

nhưng bị lỗi "438" "Object doesn't support this property or method"
Mong các AC giúp đỡ.
Em đã thử ở bài #10 nhưng lỗi Anh ơi.
Mong Anh giúp (dữ lieu đập vào sheet "Bao cao" rồi mới in chứ không phải in Form)
 
Upvote 0
Em đã thử ở bài #10 nhưng lỗi Anh ơi.
Mong Anh giúp (dữ lieu đập vào sheet "Bao cao" rồi mới in chứ không phải in Form)
rồi bạn đã thử copy toàn bộ code ở #13 thay thế cho code của nút in trong form của bạn chưa.
nói code của phulien1902 có nghĩa là tôi lấy code của bác ấy ghép vô cho bạn, chứ có phải là code cũ đâu.
bạn đã thử nhấn F8 trong lúc chạy code chưa. hay lắm đó. một cách học code, test lỗi. thử đi, tôi học theo cách ghi macro với F8 không à.
nếu bạn muốn có kiến thức về vba thì tập cách ghi macro rồi thao tác trên bảng tính, xong mở cửa sổ soạn thảo code rồi nhấn F8 xem công việc nó làm thế nào, từ đó rút ra kinh nghiệm, rút gọn code sau khi ghi macro (code thừa nhiều) rồi lúc đó sẽ biết code đó làm công việc đó. sau đó tùy biến từng trường hợp thôi.
 
Upvote 0
Anh chỉ em nhấn F8 với, chứ em vào VBE code em có tới 4 Sub thì em làm sao, trong code của bạn Phulien1902 phải bỏ "ActiveWindow.SelectedSheets,PrintPreview" vì khi đó Form nó "trơ" ra luô
 
Upvote 0
Thì bỏ dòng đó đi thôi
Chỗ nào ban thấy có chữ Sub
..... gì đó, nhấn chuột vào đó nhấn f9 cho dòng đó thành màu đỏ
Làm tương tự với 4 cái kia
Xong bật form lên, thao tác như bình thường.
Khi bạn nhấn vào nút lệnh thì sẽ bật cửa sổ VBA lên.
Thu cửa sổ nhỏ lại để có thể nhìn trên trang tính.
Đặt chuột trở lại cửa sổ VBA. Nhấn F8 vừa nhấn vừa xem trên trang tính có gì thay đổi. Tức là dòng đó thực hiện việc đó.
Ghi chú lại để nhớ.
Để ghi chú được thì bạn chọn ở điểm cuối cùng của dòng code nhấn dấu ' rồi ghi chú. Lưu ý. Nếu điểm cuối cùng bạn thấy có ký tự _ thì không ghi chú ngay dòng đó được. Ghi chú chỗ khác
Làm sao mà dòng code đó không bị chuyển thành màu đỏ là được.
Như những code bên trên khi bạn dán vào cửa sổ VBA thì có những đoạn màu xanh lá. Đó là ghi chú.
Thấy bạn hỏi rồi trả lời trên diễn đàn dữ lắm mà mấy cái cơ bản vậy còn chưa biết thì thua. Nên mua 1 chương trình nào đó phục vụ được cho công việc mà dùng. Chứ bạn hỏi code trên này hoài mà không biết ý nghĩa code người khác viết thì thua.
Anh chỉ em nhấn F8 với, chứ em vào VBE code em có tới 4 Sub thì em làm sao, trong code của bạn Phulien1902 phải bỏ "ActiveWindow.SelectedSheets,PrintPreview" vì khi đó Form nó "trơ" ra luô
 
Upvote 0
Thì bỏ dòng đó đi thôi
Chỗ nào ban thấy có chữ Sub
..... gì đó, nhấn chuột vào đó nhấn f9 cho dòng đó thành màu đỏ
Làm tương tự với 4 cái kia
Xong bật form lên, thao tác như bình thường.
Khi bạn nhấn vào nút lệnh thì sẽ bật cửa sổ VBA lên.
Thu cửa sổ nhỏ lại để có thể nhìn trên trang tính.
Đặt chuột trở lại cửa sổ VBA. Nhấn F8 vừa nhấn vừa xem trên trang tính có gì thay đổi. Tức là dòng đó thực hiện việc đó.
Ghi chú lại để nhớ.
Để ghi chú được thì bạn chọn ở điểm cuối cùng của dòng code nhấn dấu ' rồi ghi chú. Lưu ý. Nếu điểm cuối cùng bạn thấy có ký tự _ thì không ghi chú ngay dòng đó được. Ghi chú chỗ khác
Làm sao mà dòng code đó không bị chuyển thành màu đỏ là được.
Như những code bên trên khi bạn dán vào cửa sổ VBA thì có những đoạn màu xanh lá. Đó là ghi chú.
Thấy bạn hỏi rồi trả lời trên diễn đàn dữ lắm mà mấy cái cơ bản vậy còn chưa biết thì thua. Nên mua 1 chương trình nào đó phục vụ được cho công việc mà dùng. Chứ bạn hỏi code trên này hoài mà không biết ý nghĩa code người khác viết thì thua.

- Nếu bạn ấy không đưa File lên, thì chúng ta phỏng đoán cũng không trúng được, vậy những dòng code chúng ta code, sẽ giống nhu áp dụng cho mô hình thôi,
 
Upvote 0
Tôi không hiểu Code của bạn, nên không thể giúp gì được bạn rồi
...Gửi luôn form có code đi bạn, coi thì thấy nó chỉ cho bạn xem trc rồi muốn in hay k. Còn nội dung form có gì thì sao
...
- Nếu bạn ấy không đưa File lên, thì chúng ta phỏng đoán cũng không trúng được
Đọc code mà không hiểu lại cứ đòi Form có code, đòi tập tin.
Người ta đã gửi code mà trong đó có dòng nằm tơ hơ ra
Worksheets("Bao cao").Range("A1:G" & ListBox7.ListCount + 4).PrintOut
Nhìn vào là biết sẽ in một vùng trên sheet: từ cột A tới cột G và từ dòng 1 tới dòng nào đó. Thế thì sao cứ đòi Form, tập tin? In 1 vùng trên sheet là in 1 vùng trên sheet. Chả nhẽ nếu người ta nhập dữ liệu bằng tay thì in khác, đổ dữ liệu từ Form xuống sheet thì in khác, mà nhập dữ liệu từ tập tin ngoài vào sheet thì in khác? Người ta muốn in 1 vùng trên sheet và đã từng in bình thường, tức thành công, chỉ có điều tới thời điểm này toàn in trên giấy đứng
Em có đoạn code của AC trên DD giúp cho khi nhấn vào thì in(PrintOut)
nhưng khi in là in theo mặc định giấy khổ đứng
Bây giờ người ta muốn thêm/sửa code để in ngang hoặc đứng
Mong các AC giúp cho một nút để tùy chọn khổ giấy là ngang hay đứng
Chỉ có thế thôi. Đọc không hiểu mà cứ đòi Form, tập tin. Dữ liệu có rồi, không quan trọng là đã nhập từ Form, nhập tay hay đọc từ tập tin ngoài, và người ta đã in nhiều lần thành công. Người ta chỉ muốn có thêm lựa chọn chiều giấy in thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin các AC giúp em chổ Sub Select_abc(), khi chọn "CanCel" thì thoát Sub Select_abc () đồng thời cũng thoát luôn sub cmd_in6_Click(), em thử thế này mà không được:
Mã:
Private Sub Select_abc()
    Dim a As String
    a = MsgBox("Chon trang ngang hay doc", vbYesNoCancel, "Thong bao")
    If a = vbYes Then
        ActiveSheet.PageSetup.Orientation = xlPortrait    ' doc
        'ActiveWindow.SelectedSheets.PrintOut
        ActiveWindow.SelectedSheets.PrintPreview
    ElseIf a = vbNo Then
        ActiveSheet.PageSetup.Orientation = xlLandscape    ' ngang
        'ActiveWindow.SelectedSheets.PrintOut
        ActiveWindow.SelectedSheets.PrintPreview
Exit_cmd_in6_Click: <-------them cho nay
        Exit Sub
    End If
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom