Dim scn As Worksheet
Dim dongcuoi, dongcuoi1 As Long, dc As String
Dim bo As Integer
Set scn = Sheets("CN_T2")
scn.Activate
dongcuoi = scn.Cells(Rows.Count, 4).End(xlUp).Row
dongcuoi1 = scn.Cells(Rows.Count, 9).End(xlUp).Row
bo = scn.Range("J1").Value
If dongcuoi >= dongcuoi1 Then
dc = "A1:I" & dongcuoi
scn.Range(dc).Activate
Worksheets.Application.ActiveSheet.Range(dc).PrintOut Copies:=bo, Collate:=True
Else
dc = "A1:I" & dongcuoi1
scn.Range(dc).Activate
Worksheets.Application.ActiveSheet.Range(dc).PrintOut Copies:=bo, Collate:=True
End If
Mình sử dụng cái này, gửi bạn tham khảo thêm
Ồ xin cảm ơn người anh em đã tìm đến và giúp đỡ tôi, nhưng vấn đề của tôi không chỉ đơn giản dừng lại ở việc lựa chọn vùng in hay số bản in.
Tôi xin mô tả cụ thể như sau, tôi in thông tin cho cán bộ công nhân viên (in hàng loạt và lặp lại) số bản in mỗi lần chỉ là 1 chỉ khác nhau mỗi bản in là thông tin của từng người (cái này tôi đã dùng vòng lặp) đến đây không có vấn đề gì khó khăn cả.
Khó khăn ở đây là ở việc lựa chọn máy in và khay in cho mỗi lần in.
Ví dụ:
1.nếu chọn tổ A trong tổ A sẽ in ra 10 nhân viên (vì tổ có 10 người) - thì cần chọn in giấy màu vàng ở khay(tray) 2 của máy in có tên XYZ
2.nếu chọn tổ B trong tổ B sẽ in ra 8 nhân viên (vì tổ có 8 người) - thì cần chọn in giấy màu xanh ở khay(tray) 2 của máy in có tên ABC
3.nếu chọn tổ Ctrong tổ C sẽ in ra 23 nhân viên (vì tổ có 23 người) - thì cần chọn in giấy màu trắng ở khay(tray)1 của máy in có tên ABC
Tôi có sử dụng câu lệnh:
Application.Dialogs(xlDialogPrinterSetup).Show
Với câu lệnh này gặp phải vấn đề như sau:
nếu tôi thực hiện mục 1 ở trên --> chọn khay 2, máy XYZ (kết quả OK) đúng ý - vì có thể do trước đó máy tính này đã in trên máy in XYZ
ngay sau đó tôi thực hiện tiếp mục 2 đổi máy ABC chọn khay 2 thì kết quả bị in ra giấy trẳng ở khay 1 máy ABC (vấn đề ở đây)
nhưng sau khi bị in ra sai tôi lại tiếp tục chọn in lại một lần nữa mục 2 này chọn khay 2 của máy ABC thì mới OK.
Có nghĩa là sau khi máy nào đó thì nó mới nhận thông tin của máy đó.
Do vậy tôi không dùng được:
Application.Dialogs(xlDialogPrinterSetup).Show
Nếu sử dụng thì mỗi lần in thì chọn trước và phải hi sinh một tờ giấy để nó nhận thông tin rồi chọn lại
Do vậy mà tôi đã chuyển sang:
Application.Dialogs(xlDialogPrint).Show(1, 1, 1) -- và để tham số là 3 số 1 như vậy (1 lần in 1 bản và 1 trang)
Câu lệnh này rất OK nhưng gặp phải vấn đề.
Nếu người dùng thay đổi các thông số trong khung thì mọi thứ sẽ sai, ví dụ số 1 in ra không phải là 1 người một bản nữa mà một người ứng với số bản mà không phải là số 1 (như là việc copy) không qua vòng lặp để thay đổi thông tin bản in sau.
Vì vậy tôi mong muốn xem có cách nào để khóa tất cả các lựa chọn trong khung màu cam không để tránh người dùng tương tác đến:
Giống như giao diện này giống như bác
@befaint đã nói đó là giao diện của phần mềm khác (không phải Office-Excel) đúng là như vậy:
Nếu bạn nào biết kỹ thuật nào can thiệp được vào để xử lý được vấn đề này thì hay quá.