Nhờ viết hộ code in danh sách cho trước.

Liên hệ QC

trinhnt1308

Thành viên mới
Tham gia
5/6/08
Bài viết
45
Được thích
14
File của mình có 3 sheet: Cam_ket, HDLD và Danh_sach.
2 sheet Cam_ket và HDLD được tìm kiếm từ sheet danh_sach.
Mỗi lần in, mình phải gõ từng số hợp đồng(Chính là số thứ tự từ sheet danh_sach).
Nhờ mọi người viết giúp mình code, để in luôn toàn bộ danh sách(toàn bộ số thứ tự trong sheet danh_sach, hoặc in đến số thứ tự theo lựa chọn của mình) để in 2 sheet HDLD và cam_ket.
Cảm ơn mọi người!!
 

File đính kèm

File của mình có 3 sheet: Cam_ket, HDLD và Danh_sach.
2 sheet Cam_ket và HDLD được tìm kiếm từ sheet danh_sach.
Mỗi lần in, mình phải gõ từng số hợp đồng(Chính là số thứ tự từ sheet danh_sach).
Nhờ mọi người viết giúp mình code, để in luôn toàn bộ danh sách(toàn bộ số thứ tự trong sheet danh_sach, hoặc in đến số thứ tự theo lựa chọn của mình) để in 2 sheet HDLD và cam_ket.
Cảm ơn mọi người!!

Bạn tham khảo file này và tại đây
 
Upvote 0
In Hợp Đồng

Tôi tạo thêm 1 sheet để bạn việc in cho tiện. Xem lại có gì cần bổ sung không nhé!

<<< file đã sửa: cho phép chọn in theo sheet. >>>
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tôi làm thêm 1 sheet để bạn chọn công việc in. Bạn xem có gì cần bổ sung không?
Cảm ơn bác nhiều, có thể in từng sheet được không hả bác, nếu được bác chỉnh hộ em với(In xong đỡ phải mất công sắp xếp lại, với lại sheet HDLD có thể em in thành 2 mặt cho gọn)
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào bạn,

Gửi tặng bạn file đã chỉnh sưả, bạn dưạ vào đó viết tiếp cho sheet2 nhé.

Have a nice weekend
Thanks.
Anh Tú

"HỌC TIẾNG ANH MỌI NƠI, CHƠI TIẾNG ANH MỌI LÚC, HỌC LÀ PHẢI DÙNG ĐƯỢC".
 

File đính kèm

Upvote 0
Tôi tạo thêm 1 sheet để bạn việc in cho tiện. Xem lại có gì cần bổ sung không nhé!

<<< file đã sửa: cho phép chọn in theo sheet. >>>
Bác đã giúp em, câu và làm sẵn cá cho em rùi, em cảm ơn bác nhiều!!
Giờ bác giúp em, cho em cái cần, diễn giải cho em cái đoạn code mà bác viết.
Kiến thức hạn hẹp, mong các bác thông cảm!!
Xin chân thành cảm ơn.
-
Mã:
Private Sub cmdPrint_Click()
Const nCamKet = "Cam_Ket"
Const nHDLD = "HDLD"
Dim rCK  As Worksheet, rHD As Worksheet
    Application.ScreenUpdating = False
    sn = Me.Range("sNum")
    en = Me.Range("eNum")
    If sn = 0 Then
        sn = 1: en = [A1]
    End If
    Set rCK = Sheets(nCamKet)
    Set rHD = Sheets(nHDLD)
    For i = sn To en
        rCK.Range(nCamKet) = i
        If Me.chkPPV Then
            If Me.chkCamKet Then rCK.PrintPreview
            If Me.chkHDLD Then rHD.PrintPreview
        Else
            If Me.chkCamKet Then rCK.PrintOut
            If Me.chkHDLD Then rHD.PrintOut
        End If
    Next
    Me.Range("sNum").Activate
    Set rCK = Nothing: Set rHD = Nothing
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Giải thích code VBA

Giờ bác giúp diễn giải cho em cái đoạn code mà bác viết.
-
Mã:
Private Sub cmdPrint_Click()
Const nCamKet = "Cam_Ket"   '[COLOR=red]-> 2 dòng này khai báo sẵn các tên sheet, nếu có thay[/COLOR]
Const nHDLD = "HDLD"           '[COLOR=red]-> đổi tên sheet thì nhớ đổi ở đây.[/COLOR]
Dim rCK  As Worksheet, rHD As Worksheet
    Application.ScreenUpdating = False   ' [COLOR=red]tạm ngưng chế độ cập nhật màn hình[/COLOR]
[COLOR=red]                                                      ' để tăng tốc độ[/COLOR]
    sn = Me.Range("sNum")                   ' [COLOR=#ff0000]"sNum, eNum là tên (Name) của ô chứa giá trị[/COLOR]
    en = Me.Range("eNum")                  ' [COLOR=red]bắt đầu in và kết thúc [/COLOR]
    If sn = 0 Then                               ' [COLOR=red]nếu nhập 0 thì in toàn bộ[/COLOR]
        sn = 1: en = [A1]                      ' [COLOR=#ff0000]ở ô A1 có công thức tính số hiệu hđồng lớn nhất[/COLOR]
    End If
    Set rCK = Sheets(nCamKet) ' [COLOR=red]đặt tham chiếu đến 2 sheet sẽ in[/COLOR]
    Set rHD = Sheets(nHDLD)
    For i = sn To en
        rCK.Range(nCamKet) = i  ' [COLOR=red]gán giá trị vào ô trên sheet để thay đổi các công thức[/COLOR]
        If Me.chkPPV Then         ' [COLOR=red]nếu check vào nút prỉntpreview[/COLOR]
            If Me.chkCamKet Then rCK.PrintPreview    ' [COLOR=red]thì sẽ xem trước khi in[/COLOR]
            If Me.chkHDLD Then rHD.PrintPreview
        Else                             ' [COLOR=#ff0000]nếu không check vào nút prỉntpreview[/COLOR]
            If Me.chkCamKet Then rCK.PrintOut   ' [COLOR=red]thì sẽ in luôn[/COLOR]
            If Me.chkHDLD Then rHD.PrintOut
        End If
    Next
    Me.Range("sNum").Activate             ' [COLOR=red]chọn ô chứa giá trị số HD bắt đầu in[/COLOR]
    Set rCK = Nothing: Set rHD = Nothing
    Application.ScreenUpdating = True  ' [COLOR=red]thiết lập lại việc cập nhật màn hình[/COLOR]
End Sub


Toàn bộ code trên đơn giản chỉ là xử lý các dữ liệu sẵn có trên sheet, các tùy chọn thì xét ở các nút check. Trong file tôi có đặt 1 số name, bạn vào phần định nghĩa name sẽ thấy. Mục đích chỉ để linh hoạt hơn trong code khi có thay đổi như chèn thêm dòng, cột sẽ ít ảnh hưởng đến code.
 
Upvote 0
Thx bác nhiều, bác chỉ giúp em luôn cách "gán đoạn code bằng nút print" với cách tạo ba ô để check danh sách in gồm : Print Preview, Print HDLD và Print Cam_ket!!
 
Upvote 0
Hướng dẫn

Hướng dẫn: Cách tạo nút lệnh và gắn mã lệnh
Bước 1: Bật Control Toolbox (nếu chưa bật)
Nhấn R-Click vào vùng menu, từ danh sách xổ xuống, click chọn mục Control Toolbox nếu nó chưa được chọn.
Bước 2: Từ Control Toolbox, chọn biểu tượng Command Button (hình chữ nhật) và vẽ lên sheet một nút lệnh.
Bước 3: Nhấn Double-Click vào nút lệnh vừa vẽ, sẽ mở của sổ VBE và tự động thêm một Sub, thường có tên là Command1_Click
Bước 4: Nếu đã có sẵn một thủ tục để xử lý sự kiện Click (được tạo ở đâu đó) thì copy đoạn code nằm giữa 2 dòng:
Private Sub xxxxx_Click(...) và End Sub (không chọn 2 dòng này) và Paste vào đoạn giữa của Sub Command1_Click ở trên.
Nếu biểu tượng hình cây thước eke trên thanh Control Toolbox (nút Design Mode) đang được chọn thì click vào nó để thoát khỏi chế độ thiết kế (Exit Design Mode)
(lúc này việc nhấn vào nút Command1 mới có hiệu lực)

Nếu muốn thay đổi thuộc tính của đối tượng thì trước hết chuyển sang chế độ thiết kế (nhấn chọn nút Design Mode), sau đó R-click vào đối tượng (ví dụ nút lệnh Command button ở trên) và chọn Properties. Vào bảng Properties để thay đổi các thuộc tính, có 2 thuộc tính hay thay đổi là: (Name) : là tên mã của đối tượng, dùng cho việc viết lệnh
Caption: là text sẽ hiển thị trên nút.

Ví dụ: với nút Print, thì (Name) được đặt là CmdPrint; Caption là Print
(khi nhấn Doub-Click, cửa sổ VBE mở ra sẽ đặt con trỏ đứng ngay đoạn mã:
(từ Click nối với tên nút ám chỉ nút sẽ xử lý sự kiện khi người dùng click mouse
thông qua các mã lệnh nằm giữa 2 dòng đầu và cuối của thủ tục xử lý.)
Private Sub cmdPrint_Click()
(... mã lệnh nằm ở đây)
End Sub

Hướng dẫn: Cách tạo các nút check
Tương tự cách vẽ nút lệnh, ta chọn biểu tượng: Check Box từ Control Toolbox và vẽ lên sheet 3 nút check
Sau đó lần lượt thay đổi thuộc tính của các check này (nếu không muốn để Excel tự động đặt tên, đặt caption...)
(chỉ cần thay đổi 2 thuộc tính: (Name) và Caption
ngoài ra các thuộc tính cơ bản khác dùng để thay đổi Font chữ, màu sắc, nói chung là cách thể hiện, có thể thay đổi từng thuộc tính để xem hiệu quả của nó
 
Upvote 0
Web KT

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

Back
Top Bottom