You are here:: Các bài học hay VBA trong Excel
 
 

VBA trong Excel

Lấy danh sách máy in và in các sheet tùy ý trong VBA

Khi lập trình VBA trong Excel chúng ta cần lấy danh sách các máy in tùy ý và chọn một sheet tùy ý để in. Phương pháp làm là lập trình VBA kết hợp phương pháp lập trình Windows API.

Mã nguồn lấy danh sách máy in và in tùy ý lập trình VBA trong Excel như sau:

'Cai tien dua vao userform - Nguyen Duy Tuan - http://bluesofts.net - 
  Địa chỉ email này đã được bảo vệ từ spam bots, bạn cần kích hoạt Javascript để xem nó.
 
Option Explicit 
Private Sub cmdPrint_Click() 
   Dim sh As Worksheet 
   Set sh = ActiveWorkbook.Sheets(cbSheets.Value) 
   sh.PrintOut , , txtCopies.Value, False, cbPrinters.Value 
End Sub 
Private Sub SpinButton1_Change() 
   'Tang, giam so ban copy
   txtCopies.Value = SpinButton1.Value 
End Sub 
Private Sub UserForm_Initialize() 
   Dim PrinterName As Variant, sh As Object, I& 
   I = 0 
   For Each PrinterName In EnumeratePrinters 
      I = I + 1 
      cbPrinters.AddItem PrinterName 
      If cbPrinters.ListIndex < 0 And PrinterName = ActivePrinter Then 
         'Lay may in default
         cbPrinters.ListIndex = I - 1 
      End If 
   Next 
   'Hien may in dau tien
   If cbPrinters.ListIndex < 0 And cbPrinters.ListCount > 0 Then 
      cbPrinters.ListIndex = 0 
   End If 
   I = 0 
   For Each sh In ActiveWorkbook.Sheets 
      I = I + 1 
      cbSheets.AddItem sh.name 
      If cbSheets.ListIndex < 0 And sh.name = ActiveSheet.name Then 
         'Hien sheet dang mo
         cbSheets.ListIndex = I - 1 
      End If 
   Next 
End Sub 

Download

Tham khảo khóa đào tạo lập trình VBA cơ bảnlập trình VBA nâng cao tại Bluesofts.net

Các phương pháp để đo thời gian thực thi mã lệnh trong VB/VBA

Hàm Timer có thể dùng để xác định thời gian khi mà việc kiểm soát thời gian không quá khắt khe. 

Khi cần kiểm tra sự dịch chuyển thời gian mà mức thay đổi lên đến 1/1000 giây (1 millisecond - mili giây) thì cần dùng các hàm API.
Có thể liệt kê các hàm đo thời gian như sau:
Now, Time, Timer (thuộc VB/VBA)
GetTickCount
TimeGetTime
QueryPerformanceCounter, QueryPerformanceFrequency 


Chúng ta sẽ cùng thực hiện một loạt các thử nghiệm dưới đây sẽ có kết luận.
Với mỗi thủ tục test dưới đây là một phương pháp đo thời gian thực hiện mã lệnh.

Trong VB/VBA, đầu Module khai báo các hàm API

Code:
Declare Function QueryPerformanceCounter Lib "Kernel32" _
                        (X As Currency) As Boolean
Declare Function QueryPerformanceFrequency Lib "Kernel32" _
                        (X As Currency) As Boolean
Declare Function GetTickCount Lib "Kernel32" () As Long
Declare Function timeGetTime Lib "winmm.dll" () As Long

Ẩn sheet người dùng không thể unhide để hiện ra

h04_03

Để bảo vệ bảng tính không cho người khác xem chúng ta cần đặt bảng tính đó Hide, tuy nhiên người khác sẽ vẫn thấy trạng thái chờ Unhide để xem lại. Có một cách để tạo ra nút Unhide luôn mờ - không thể Unhide sheet mặc dù chúng ta đang cho ẩn sheet ở cấp độ cao...

Sắp xếp các sheet trong Excel tăng dần hoặc giảm dần

Một file Excel với nhiều sheet mà tên của nó không được sắp xếp theo trình tự sẽ khó quản lý. Sau đây tôi chia sẻ với các bạn phương pháp sắp xếp các sheet theo tên tăng dần hoặc giảm dần bằng VBA....

Lập trình vba kết nối và soạn thảo tệp excel qua mạng

A-Tools cung cấp giao diện người dùng để kết nối và soạn thảo tệp Excel qua mạng. A-Tools cung cấp đối tượng lập trình để bạn có thể tự thiết kế một giao diện nhập liệu khác và truy xuất dữ liệu Excel qua mạng bằng dòng lệnh, cài đoạn code vào ứng dụng Excel của bạn để nó có thể chạy được qua mạng. Bài viết dưới đây tôi trình bày với các bạn phương pháp lập trình VBA với A-Tools để kết nối và soạn thảo tệp Excel qua mạng.

Trang 1 của 5