Nhờ các anh chị trong GPE hướng dẫn em cách tạo form để lựa chọn máy In.
ví dụ trong máy em có 4 máy in. em muốn mình in máy nào thì chỉ cần nhấn ComboBox nó sẽ liệt kê tất cả các may in mà mình kết nối và khi muốn in máy nào thì chỉ việc chọn vào máy đó. giống như nhấn Ctrl + P trong excel vậy.
Nhờ các anh chị trong GPE hướng dẫn em cách tạo form để lựa chọn máy In.
ví dụ trong máy em có 4 máy in. em muốn mình in máy nào thì chỉ cần nhấn ComboBox nó sẽ liệt kê tất cả các may in mà mình kết nối và khi muốn in máy nào thì chỉ việc chọn vào máy đó. giống như nhấn Ctrl + P trong excel vậy.
Mục đích của em là làm thêm chọn máy in và chọn số lượng trang In thêm vào add in in trang chẳng lẻ của thầy PhạmDuyLong.
Nguyên văn bởi phamduylong
Trong Word cho phép chọn in trang chẳn, lẻ. Nhưng Excel không hỗ trợ cách in này. Nhiều bạn đã hỏi và có nhiều bài viết về vấn đề này. Từ một code chọn trang in, tôi phát triển thêm để có thể:
- Báo tổng số trang trong sheet.
- Chọn in tất cả ALL
- Chọn in trang chẳn CHAN
- Chọn in trang lẻ LE
- In từ trang đến trang
Đây là tập tin XLA nên bạn không thấy nó trên màn hình. Muốn in bấm Ctrl+Shift+P
Code:
Sub PrintPage()
'
' PrintPage Macro
' Macro recorded 24/03/2008 by Pham Duy Long
'
' Keyboard Shortcut: Ctrl+Shift+P
'
Dim n As Integer, i As Integer
n = ExecuteExcel4Macro("Get.Document(50)")
tb = "Sheet [" & ActiveSheet.Name & "] co tat ca " & n & " trang" & _
Chr(13) & "Chon trang in:" & Chr(13) & _
" ALL : in tat ca CHAN : in trang chan LE : in trang le" & Chr(13) & _
" 1-" & n & " : in tu trang 1 den trang " & n
sotrang = Trim(UCase(Application.InputBox(tb, "In trang", , , , , , 2)))
Select Case sotrang
Case "FALSE", ""
Exit Sub
Case "ALL"
ActiveWindow.SelectedSheets.PrintOut
Case "CHAN"
For i = 2 To n Step 2
ActiveWindow.SelectedSheets.PrintOut From:=i, To:=i
Next
Case "LE"
For i = 1 To n Step 2
ActiveWindow.SelectedSheets.PrintOut From:=i, To:=i
Next
Case Else
dau = Val(sotrang)
cuoi = Val(Mid(sotrang, InStr(sotrang, "-") + 1))
If cuoi = 0 Then cuoi = dau
If dau * cuoi = 0 Or cuoi < dau Then
MsgBox "Nhap so trang " & sotrang & " sai !"
Else
If dau > n Then dau = n
If cuoi > n Then cuoi = n
ActiveWindow.SelectedSheets.PrintOut From:=dau, To:=cuoi
End If
End Select
Hay dở ta chưa bàn đến ---> Quan điểm của tôi khi thao tác dử liệu là phải nhanh ---> Bạn nói tôi biết việc dùng Form chọn máy in nhanh hơn nhấn Ctrl + P ở chổ nào ---> Rồi ta bàn tiếp (nhấn Ctrl + P bạn cũng chọn được số trang in vậy)
Tôi chỉ cần đến sự hổ trợ của VBA khi mà các chức năng của Excel không thể đáp ứng đủ nhu cầu... hoặc việc thao tác bằng tay quá chậm
Công cụ mãi mãi vẫn chỉ là công cụ ---> Dùng thế nào? Vào việc gì? Đúng mục đích hay không là việc của từng người ---> Mục đích cuối cùng vẫn là HIỆU QUẢ CÔNG VIỆC ---> Các bạn nghĩ đúng không?
Hay dở ta chưa bàn đến ---> Quan điểm của tôi khi thao tác dử liệu là phải nhanh ---> Bạn nói tôi biết việc dùng Form chọn máy in nhanh hơn nhấn Ctrl + P ở chổ nào ---> Rồi ta bàn tiếp (nhấn Ctrl + P bạn cũng chọn được số trang in vậy)
Tôi chỉ cần đến sự hổ trợ của VBA khi mà các chức năng của Excel không thể đáp ứng đủ nhu cầu... hoặc việc thao tác bằng tay quá chậm
Công cụ mãi mãi vẫn chỉ là công cụ ---> Dùng thế nào? Vào việc gì? Đúng mục đích hay không là việc của từng người ---> Mục đích cuối cùng vẫn là HIỆU QUẢ CÔNG VIỆC ---> Các bạn nghĩ đúng không?
dạ tự vì trong excel không thể in trang chan hay trang lẻ được. Nếu muốn in thì ta nhấn 1,3,7,9,11,13 hay 2,4,6,8,10 thì mất công quá ví dụ em cần in 100 trang ngồi mà gõ thì cực quá. nếu có máy in 2 mặt thì khỏi nói rồi.
Việc em dùng form chọn máy in là để thêm vào ADD in thôi. và dĩ nhiên theo em nghĩ là nó chậm hơn Ctrl + P rồi
dạ tự vì trong excel không thể in trang chan hay trang lẻ được. Nếu muốn in thì ta nhấn 1,3,7,9,11,13 hay 2,4,6,8,10 thì mất công quá ví dụ em cần in 100 trang ngồi mà gõ thì cực quá. nếu có máy in 2 mặt thì khỏi nói rồi.
Việc em dùng form chọn máy in là để thêm vào ADD in thôi. và dĩ nhiên theo em nghĩ là nó chậm hơn Ctrl + P rồi
OK ---> Đồng ý khoảng này!
Giờ bạn thử Record macro quá trình in ---> Sau đó mở code lên xem và xây dựng yêu cầu in ấn theo ý mình ---> Cụ thể với việc in chẳn lẻ, bạn chỉ cần vòng lập For... ví dụ For i = 1 to ... Step 2
....
Next
Là in lẻ được rồi
vân vân và vân vân
Tự mình xây dựng từng bước, theo tôi vẫn sướng hơn! (vì là sản phẩm của chính mình) ---> Bạn nghĩ sao? Vụ chẳn lẻ này khá đơn giản mà
Anh nói giống như anh ThuNghi từng nói khi mà tự mình làm ra 1 sản phẩm của chính do mình bỏ công sức ra thì giống như ông Ác-si-mét khi khám phá ra nguyên lý Ác-si-mét thì quên bận quần áo thì chạy ra đường... ở đây em cũng muốn tự mình làm lắm nhưng kiến thức em có hạn em chỉ biết học từng chút của mỗi bài đáp ứng được yêu cầu của em và khi em giải quyết xong thì em mới tiến hành làm theo cách của em.
Hồi đó em nghĩ Excel chỉ đơn thuần là +,-,*,/ và máy công thức đơn giản thôi. nhưng từ khi biết trang GPE và các bài do các thành viên gởi lên đâm ra nghiện, và nó cũng giúp cho em rất là nhiều trong công việc cũng nhờ những bài hường dẫn của các anh mà em lượm lặt được từng chút một.
. ở đây em cũng muốn tự mình làm lắm nhưng kiến thức em có hạn em chỉ biết học từng chút của mỗi bài đáp ứng được yêu cầu của em và khi em giải quyết xong thì em mới tiến hành làm theo cách của em.
.
VBA nói khó không khó, nói dể cũng không dể ---> Bạn hãy bắt đầu bằng phương pháp Record macro đi...
Tiếp theo đến đây tham khảo bài viết của anh SA_DQ http://www.giaiphapexcel.com/forum/showthread.php?t=650
tin rằng thời gian sau này bạn sẽ làm được những thứ bạn cần
(Tôi là dân ngoại đạo về Excel mà còn học được ---> Tôi nghĩ với bạn lại càng thừa khả năng)
OK ---> Đồng ý khoảng này!
Giờ bạn thử Record macro quá trình in ---> Sau đó mở code lên xem và xây dựng yêu cầu in ấn theo ý mình ---> Cụ thể với việc in chẳn lẻ, bạn chỉ cần vòng lập For... ví dụ For i = 1 to ... Step 2 .... Next
Là in lẻ được rồi
vân vân và vân vân
Tự mình xây dựng từng bước, theo tôi vẫn sướng hơn! (vì là sản phẩm của chính mình) ---> Bạn nghĩ sao? Vụ chẳn lẻ này khá đơn giản mà
Ví dụ mình có một form để in, dữ liệu cần in nằm ở một data khác. Mình tạo một form để chọn dữ liệu để in, các dữ liệu này sẽ được đưa lần lượt vào form rồi in (như Ủy nhiệm chi chẳng hạn). Làm sao hiển thị lên form chọn máy in trước khi bắt đầu chọn dữ liệu in. Thông thường mình chọn Ctrl+P -> chọn máy in rồ Escape sau đó chọn dữ liệu in và in.