Bài 7 - Thuộc tính CorlorIndex trong lập trình VBA Excel




{tocify} $title={Table of Contents}


1. Khái niệm thuộc tính ColorIndex


ColorIndex là một thuộc tính quan trọng, dùng để trả về hoặc đặt màu cho đường viền, font chữ, và màu nền của cell.



2. Bảng giá trị của ColorIndex

Bảng giá trị mã màu cho thuộc tính ColorIndex được dử dụng cho mục đích tham chiếu, hỗ trợ tốt cho các bạn khi lập trình VBA.






Ngoài các giá trị ở bảng mã màu ColorIndex trên, chúng ta còn có thêm 2 giá trị mặc định sau:



ColorIndex Value Explanation
-4142 / xlColorIndexNone / xlNone No fill
-4105 / xlColorIndexAutomatic / xlAutomatic Default color (white)


Ví dụ:



Set màu đường viền cho Cell
Range("A5").Borders.ColorIndex = 5


Set màu chữ trong Cell
Range("A5").Font.ColorIndex = 5


Set màu nền cho Cell
Range("A5").Interior.ColorIndex = 5


Nhận giá trị trả về của Cell
giatri = Range("A5").Interior.ColorIndex



3. Bảng giá trị mã màu RGB cho Excel


Đây là bảng màu thuộc tính của đối tượng Hex color code, thường được sử dụng để set màu cho Cell hoặc Shape.









Set màu đỏ đường viền cho Cell
Range("A5").Borders.Color = RGB (255 , 0, 0)

Set màu đỏ cho chữ trong Cell
Range("A5").Font.Color = RGB (255 , 0, 0)

Set màu đỏ nền cho Cell
Range("A5").Interior.Color = RGB (255 , 0, 0)

RGB Color là dạng kết hợp giữa 3 màu Red, Green, Blue ( R, G, B ), mỗi màu là một số nguyên 8 bit có giá trị từ 0 đến 255. Như vậy, bảng màu RGB có tổng số màu = 256 x 256 x 256 = 16,777,216
Hex color code là dãy chữ số có 6 ký tự trong hệ 16: RRGGBB. Trong đó hai ký tự đầu (RR) đại diện cho màu đỏ, hai ký tự giữa (GG) đại diện cho màu xanh lá, và hai ký tự cuối (BB) đại diện cho màu xanh dương.

Cách chuyển đổi Hex color code sang RGB

Hex color code: FF0000R = FF = 255
G = 00 = 0
B = 00 = 0Ta được RGB là RGB (255, 0, 0)

Cách chuyển đổi RGB sang Hex color code

RGB color: RGB (255, 215, 0)R = 255 = FF
G = 215 = D7
B = 0 = 00Ta được Hex color code là #FFD700



4. Excel VBA Color






Nếu các bạn không nhớ con số của các mã màu thì cách đơn giản nhất là dùng tên mã màu trong VBA. Tuy nhiên số lượng màu rất hạn chế.

Set màu chữ trong Cell
Range("A3").Font.Color = vbRed

Bài 6 - Kiểu dữ liệu thường dùng nhất trong lập trình VBA Excel


cac-kieu-du-lieu-trong-vba-data-type-in-vba




{tocify} $title={Table of Contents}


Kiểu dữ liệu là gì?


Trong mô hình dữ liệu, thì mỗi cột, mỗi ô đều có một kiểu dữ liệu như: số nguyên, số thập phân, văn bản, tiền tệ, ngày và giờ, ...

Kiểu dữ liệu cũng xác định được loại thao tác bạn có thể thực hiện trên ô/cột, và cần bao nhiêu bộ nhớ để lưu trữ nó. 



Các kiểu dữ liệu thường dùng trong lập trình VBA Excel


1. Kiểu dữ liệu Boolean


Các biến được khai báo theo kiểu Boolean được lưu trữ dưới dạng số 16 bit (2 byte), nhưng chỉ trả về dưới dạng True hoặc False. Có thể sử dụng True hoặc False để gán cho một trong hai trạng thái của các biến kiểu Boolean.
Khai báo:


Dim bien As Boolean
Function () As Boolean


2. Kiểu dữ liệu số - Byte


Biến Byte được lưu trữ dưới dạng số đơn, 8 bit (1 byte) khác nhau, có giá trị từ 0 đến 255.
Khai báo:


Dim bien As Byte
Function () As Byte


3. Kiểu dữ liệu tiền tệ - Currency


Biến Currency được lưu trữ dưới dạng số 64 bit (8 byte) ở định dạng số nguyên, được chia theo tỷ lệ 10,000 để cung cấp số cố dịnh với 15 chữ số bên trái dấu thập phân và 4 chữ số bên phải. Các biến kiểu currency nằm trong giới hạn từ -922,337,203,685,477.5808 tới 922,337,203,685,477.5807
Khai báo:


Dim bien As Currency


4. Kiểu dữ liệu ngày tháng - Date


Biến Date được lưu trữ dưới dạng số dấu phẩy động IEEE 64 bit (8 byte). Các biến được giới hạn từ ngày 1 tháng 1 đến 31 tháng 12 năm 9999 và thời gian từ 0:00:00 đến 23:59:59.
Khai báo:


Dim iDate As Date
iDate = #12/31/2009#
iDate = #31/12/2007#
iDate = "December 31, 2009"
iDate = #01:30:05 AM#
iDate = #31/12/06 08:05:30 AM#




































Các định dạng ngày tháng
Constant Giá trị Miêu tả
vbGeneralDate 0 Hiển thị ngày và / hoặc thời gian. Nếu không có phần phân đoạn, chỉ hiển thị một ngày. Nếu không có phần nguyên, chỉ hiển thị thời gian. Ngày và giờ hiển thị được xác định bởi system settings trên máy tính của bạn.
vbLongDate 1 Hiển thị ngày bằng định dạng ngày dài được chỉ định trong regional settings của máy tính.
vbShortDate 2 Hiển thị ngày bằng định dạng ngày ngắn được chỉ định trong regional settings của máy tính.
vbLongTime 3 Hiển thị thời gian bằng định dạng thời gian dài được chỉ định trong regional settings của máy tính.
vbShortTime 4 Hiển thị thời gian bằng định dạng thời gian ngắn được chỉ định trong regional settings của máy tính.




















































Đối số firstdayofweek
Constant Giá trị Miêu tả
vbUseSystem 0 Sử dụng cài đặt API NLS.
vbSunday 1 Chủ nhật (mặc định)
vbMonday 2 Thứ hai
vbTuesday 3 Thứ ba
vbWednesday 4 Thứ tư
vbThursday 5 Thứ năm
vbFriday 6 Thứ sáu
vbSaturday 7 Thứ bảy
































Đối số firstdayofyear
Constant Giá trị Miêu tả
vbUseSystemDayOfWeek 0 Sử dụng ngày trong tuần được chỉ định trong cài đặt hệ thống của bạn cho ngày đầu tiên của tuần.
vbFirstJan1 1 Bắt đầu với tuần trong đó ngày 1 tháng 1 xảy ra (mặc định).
vbFirstFourDays 2 Bắt đầu với tuần đầu tiên có ít nhất bốn ngày trong năm mới.
vbFirstFullWeek 3 Bắt đầu với tuần đầy đủ đầu tiên của năm.



5. Kiểu dữ liệu số nguyên - Integer


Biến Integer được lưu trữ dưới dạng số nguyên 32 bit (4 byte). Các biến có giá trị từ -2,147,483,648 đến 2,147,483,647.

Khai báo:
Dim k as Integer


6. Kiểu dữ liệu số nguyên - Long


Biến Long được lưu trữ dưới dạng số nguyên 64 bit (8 byte). Các biến có giá trị từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 .
Khai báo:
Dim k as Long

Bài 5 - Cách khai báo các biến và hàm trong lập trình VBA Excel





{tocify} $title={Table of Contents}


1. Khai báo biến đối tượng trong lập trình VBA




Sử dụng câu lệnh Dim hoặc một trong các câu lênh khai báo khác (Public, Private hoặc Static) để khai báo một biến đối tượng.

Ví dụ:


' Declare MyObject as Variant data type.
Dim MyObject
' Declare MyObject as Object data type.
Public MyObject As Object
' Declare MyObject as Font type.
Private MyObject As Font


2. Cách tạo Sub và Function trong lập trình VBA



Nhấp vào Visual Basic trên tab Developer, sau đó nhấ phải vào VBAProject, chọn Insert >> Module như hình trên. Trên khung soạn thảo code, để tạo một Sub/Function bạn khai báo như sau:


SubXinChao() 
'Code của bạn đặt tại đây
End SubFunction

GetData(x As Integer, y As Integer)
'Code của bạn đặt tại đây
End Function

Function GetSL(x As Integer, y As Integer) As Integer
'Code của bạn đặt tại đây
End Function


3. Cách gọi Sub và Function trong lập trình VBA


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-2710840940759095"
data-ad-slot="6573006073">


Gõ tên của Sub được tạo và các đối số truyền vào Sub đó như sau:


Sub Main() 
MBeep 15
Mess
End Sub

Sub MBeep(nums)
For i = 1 To nums
Beep
Next i
End Sub

Sub Mess()
MsgBox "Time to take a break!"
End Sub

'Đối với Sub có nhiều đối số
Sub HouseCalc(price As Single, wage As Single)
If 2.5 * wage <= 0.8 * price Then
MsgBox "You cannot afford this house."
Else
MsgBox "This house is affordable."
End If
End Sub


Các Function được gọi theo cách sau:


Sub KetQua()
Dim kq as Interger
kq = Factorial(2) 'Hàm Factorial được gọi với đối số truyền vào là 2
MsgBox kq 'Hiển thị kết quả trả về.
End Function

Function Factorial (N) as Inetrger
If N <= 1 Then
Factorial = 1
Else
Factorial = Factorial(N - 1) * N
End If
End Function
Bài tập 1:

Yêu cầu: khai báo một biến có tên là GiaTri, kiểu String và một nút lệnh tên Thông báo. Khi người dùng nhập một giá trị vào ô D5. Nhấp vào nút lệnh thì xuất hiện thông báo "Ban vua nhap vao: x", với x là GiaTri.


Bài tập 2:

Yêu cầu: sử dụng lại source của bài tập 1, nhưng khi nhấp vào nút thông báo, thì thông báo xuất hiện như hình. Đồng thời khi người dùng nhấp vào nút Yes, thì sẽ xuất hiện thêm một thông báo "Ban da nhap chon nut Yes" và ô F5 trên bảng tính sẽ có giá trị bằng giá trị trả về của nút mới nhấn. Tương tự cho nút No, giá trị trả về tại ô G5.



Bài 4 - Dùng Office Custom UI Editor tạo thêm tab trên Ribbon trong Excel




{tocify} $title={Table of Contents}


Vì sao phải thêm Tab trên thanh Ribbon?


Nếu bạn là người thường sử dụng Microsoft Exel, thường dùng một số tính năng lập đi lập lại trong công việc hằng ngày. Mỗi tính năng lại nằm trên một file Macro, nếu nhiều file quá thì rất khó kiểm soát nơi lưu và tính năng của nó.


Bây giờ xin mời các bạn xem hình phía dưới. Trên thanh Ribbon có thêm một tab tên UExcel. Trên tab UExcel lại có nhiều nút với nhiều chức năng. Nếu chúng ta có thể chèn thêm một tab trên thanh Ribbon như trên hình thì tiện quá phải không các bạn.






Cách thêm Tab trên thanh Ribbon



Trong bài viết này tôi sẽ hướng dẫn các bạn cách tạo và chèn thêm một tab công cụ vào thanh Ribbon. Tab có nhiều chức năng sẽ giúp ích cho công việc hằng ngày của các bạn.



1. Cài đặt Office Custom UI Editor


Trước tiên các bạn truy cập vào đường dẫn bên dưới để tải phầm mềm Office Custom UI Editor về.

style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-2710840940759095"
data-ad-slot="6573006073">




Sau khi tải về, giải nén ra xong thì các bạn mở file CustomUIEditor.exe để bắt đầu việc tạo cấu trúc hiển thị tab trên Ribbon. Nếu khi mở CustomUIEditor.exe, mà các bạn nhận được thông báo như hình:






Thông báo này có nghĩa là máy tính của bạn chưa cài đặt .Net Framework 3.5. Tạm thời thì cán bạn chọn Cancel. Mặc định từ Windows 7 trở về sau thì .Net Framework 3.5 đã được thêm vào khi cài đặt hệ điều hành. Để bật .Net Framework 3.5 lên thì các bạn tham khảo bài viết sau:
Sau khi bật .Net Framework lên, các bạn quay lại mở phần mềm CustomUIEditor.exe lên. Giao diện ban đầu của phầm mềm Office Custom UI Editor như sau: 





2. Thêm tab trên Ribbon dùng Office Custom UI Editor


Đầu tiên các bạn chọn File \ Open trên CustomUIEditor, tìm đến file Add-In của bạn và chọn Open để mở lên.



Tiếp theo nhấp phải vào file mới Open và chọn tab phù hợp

  • Office 2010 Custom UI Part: nếu bạn đang sử dụng Office 2010, 2013, 2016
  • Office 2007 Custom UI Part: nếu bạn đang sử dụng Office 2003, Office 2007



Ở đây tôi chọn Office 2010 Custom UI Part. Phần mềm sẽ thêm một lớp giao diện vào file Add-In của bạn tên CustomUI14.xml (hoặc CustomUI.xml).

Tiếp theo các bạn nhấp chọn file xml đó, rồi vào tab Insert \ Sample XML \ Excel - A Custom Tab. Khung soạn code XML xuất hiện như hình:





Trong khung soạn code (hình dưới), các bạn cần chú ý các vị trí sau:
    1. Mỗi tab Menu đều có tên, trong code được chỉ định là label.
    2. Vi trí xuất hiện của tab cần chèn, như trong hình tab sẽ xuất hiện sau Home.
    3. Trên mỗi tab, có nhiều Group, mỗi group đều có một id duy nhất.
    4. Tên của group trên tab.
    5. Mỗi group có thể thêm nhiều đối tượng khác nhau (button, label, editbox, gallery, item,...).
    6. 7: Mỗi đối tượng có id, tên, kích thước icon, loại icon, hàm được thực thi khi click vào đối tượng.





Ví dụ thực tế:

Hiển thị thêm 1 tab có tên myTab trên Ribbon, trong myTab có một Group với tên là First Lesson, trong group có một nút nhấn tên là Hello. Khi nhấp vào nút Hello thì màn hình sẽ xuất hiện MsbBox với nội dung là:



Xin chao moi nguoi, toi moi bat dau hoc VBA - Excel.
Chuc moi nguoi mot ngay vui ve!


Lời giải: các bạn làm theo các bước sau
Bước 1: Mở Excel lên, và lưu lại với định dạng Add-In. Ở đây mình lưu lại với tên myTab trên desktop cho dễ tìm.
Bước 2: Mở Custom UI Editor lên, rồi Open file myTab mới tạo. Tiếp theo chọn Insert \ Sample XML \ Excel - A Custom Tab.
Bước 3: Xóa hết code hiện tại và dán lên đoạn code bên dưới vào, nhấn Save để lưu lại.


<customui xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<ribbon>
<tabs>
<tab id="customTab" insertaftermso="TabView" label="myTab">
<group id="cusGroup1" label="First Lesson">
<button id="btn1" imagemso="HappyFace" label="Hello" onaction="HelloCall" size="large"></button>
</group>
</tab>
</tabs>
</ribbon>
</customui>
Bước 4: Chèn file Add-In vừa thao tác vào Excel, và kết quả được như hình.






Ở đây, khi nhấn vào nút Hello, thông báo lỗi như trên hình sẽ xuất hiện. Nguyên nhân là do chúng ta chưa viết đoạn chương trình thực thi cho nút nhấn Hello.



Bước 5:. Viết đoạn chương trình thực thi khi nhấn nút Hello.
Trên khung làm việc của excel, mình mở Visual Basic (tab Developer) lên. Nhấp phải vào và chọn Insert \ Module.




Tiếp theo các bạn nhập đoạn code như hình bên dưới vào Module 1.



Trở về khung làm việc Excel, các bạn nhấn vào nút Hello trên tab myTab, kết quả đã được như mong muốn nhé.


Bài 3: MsgBox và cách sử dụng MsgBox trong Excel




{tocify} $title={Table of Contents}


MsgBox trong Excel là gì?


MsgBox (Message Box) là một hộp thoại hiển thị thông báo trên Excel. Hộp thoại này giúp cho người tạo chương trình thông báo đến người dùng những thông báo cần thiết. Hộp thoại này có thể trả về hoặc không trả về kết quả khi người dùng tương tác vào các nút lệnh trên hộp thông báo.



Cách thuộc tính của MsgBox



    • Cú pháp: MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )






1. Thuộc tính prompt của MsgBox:

Đây là chuỗi nội dung cần hiển thị trên hộp thông báo. Độ dài cho phép tối đa là 1024 ký tự. Trong chuỗi hiển thị thông báo này các bạn có thể kết hợp với các ký tự đặt biệt để  ngắt dòng, chèn tab, về đầu dòng, ... 



Các ký tự đặc biệt trong VBA:

    • vbCrLf = chr(13) + chr(10) : xuống dòng và về đầu dòng
    • vbCr = chr(13) : xuống dòng
    • vbLf = chr(10) : về đầu dòng
    • vbNewLine = chr(13) + chr(10) : Ký tự dòng mới
    • vbTab = chr(9) : ký tự Tab
    • vbBack = chr(8) : ký tự BackSpace



2. Thuộc tính buttons của MsgBox:

Là các nút nhấn và biểu tượng hiển thị trên hộp thông báo. Đây là thuộc tính không bắt buộc, được biểu thị bằng tổng các giá trị chỉ định số lượng và loại nút hiển thị, loại biểu tượng sử dụng, tên nút và loại hộp thông báo. Nếu thuộc tính này được bỏ qua, thì giá trị mặc định cho các nút là 0.



Bảng giá trị buttons: (nguồn từ Microsoft).
















































































































Constant Value Description
vbOKOnly 0 Display OK button only.
vbOKCancel 1 Display OK and Cancel buttons.
vbAbortRetryIgnore 2 Display AbortRetry, and Ignore buttons.
vbYesNoCancel 3 Display YesNo, and Cancel buttons.
vbYesNo 4 Display Yes and No buttons.
vbRetryCancel 5 Display Retry and Cancel buttons.
vbCritical 16 Display Critical Message icon.
vbQuestion 32 Display Warning Query icon.
vbExclamation 48 Display Warning Message icon.
vbInformation 64 Display Information Message icon.
vbDefaultButton1 0 First button is default.
vbDefaultButton2 256 Second button is default.
vbDefaultButton3 512 Third button is default.
vbDefaultButton4 768 Fourth button is default.
vbApplicationModal 0 Application modal; the user must respond to the message box before continuing work in the current application.
vbSystemModal 4096 System modal; all applications are suspended until the user responds to the message box.
vbMsgBoxHelpButton 16384 Adds Help button to the message box.
VbMsgBoxSetForeground 65536 Specifies the message box window as the foreground window.
vbMsgBoxRight 524288 Text is right aligned.
vbMsgBoxRtlReading 1048576 Specifies text should appear as right-to-left reading on Hebrew and Arabic systems.



Lưu ý:

  • Nhóm đầu từ 0 đến 5 mô tả số lượng và loại nút trong hộp thoại.
  • Nhóm thứ hai (16, 32, 48, 64) mô tả kiểu biểu tượng.
  • Nhóm thứ ba (0, 256, 512) xác định nút nào là mặc định.
  • Nhóm thứ tư (0, 4096) xác định phương thức của hộp tin nhắn.




3. Thuộc tính title của MsgBox


Thuộc tính này không bắt buộc. Đây là chuỗi được hiển thị trên thanh tiêu đề của hộp thông báo. Nếu thuộc tính này được bỏ qua, thì thanh tiêu đề sẽ hiển thị mặc định là Microsoft Excel.


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-2710840940759095"
data-ad-slot="6573006073">





4. Thuộc tính helpfile, context của MsgBox

Thuộc tính này không bắt buộc, không thường được sử dụng, tôi xin được bỏ qua.



5. Các giá trị trả về của nút lệnh trên MsgBox


Các giá trị trả về khi nhấn các nút lệnh trên MsgBox:













































Constant
Value
Description
vbOK
1
OK
vbCancel
2
Cancel
vbAbort
3
Abort
vbRetry
4
Retry
vbIgnore
5
Ignore
vbYes
6
Yes
vbNo
7
No



Mình sẽ có nhiều ví dụ có sử dụng MsgBox, khi đó các bạn sẽ hiểu rõ hơn về MsgBox.



Cách sử dụng MsgBox trong Excel



Các bạn mở trình soạn thảo code, và tạo một đoạn chương trình như sau:


Private Sub CommandButton1_Click()
    Dim Msg, Style, Title, Help, Ctxt, Response, MyString
    Msg = "Xin chao moi nguoi," & _
    " toi la Kungfu Excel" & Chr(10) & _
     "Chuc moi nguoi mot ngay vui ve!"
     Style = vbYesNo + vbCritical + vbDefaultButton2

    Title = "Welcome Message"
    Res = MsgBox(Msg, Style, Title, Help, Ctxt)
    If Res = vbYes Then
    MsgBox "Ban moi nhan nut Yes"
Else
    MsgBox "Ban moi nhan nut No"
    End If
    End Sub


Tạo một nút lệnh trên worksheet, và gán đoạn chương trình mới tạo ở trên vào. Nhấp vào nút lệnh, hộp thông báo xuất hiện. Trong ví dụ trên, chúng ta đã sử dụng biến Msg để nhận giá trị trả về. Dựa vào bảng các giá trị trả về, nếu giá trị trả về là hằng số vbYes, thì sẽ xuất ra thông báo "Ban moi nhan nut Yes", nếu giá trị trả về là hằng số vnNo thì sẽ xuất ra thông báo "Ban moi nhan nut No".

Bài 2: Tính năng Record Macro và tạo Add-In trong Excel




Xin chào các bạn, ở bài viết này chúng ta sẽ cùng làm quen với tính năng Record Macro và tạo Add-Ins trên Microsoft Excel. Như vậy chắc sẽ có bạn thắc mắc rằng: 
    • Macro là gì?
    • Add-Ins là gì?
    • Có tác dụng gì cho chúng ta?



{tocify} $title={Table of Contents}


Macro trong Excel là gì?

1. Định nghĩa Macro (theo Microsoft)

Macro là một công cụ cho phép bạn tự động hóa các tác vụ và thêm chức năng vào biểu mẫu, báo cáo và điều khiển. Ví dụ: nếu bạn thêm một nút lệnh vào biểu mẫu, bạn liên kết thuộc tính sự kiện OnClick của nút đó với macro chứa các lệnh mà bạn muốn nút đó thực hiện mỗi lần bấm.

Macro được xem như một ngôn ngữ lập trình đơn giản hóa cho phép bạn tạo mã bằng cách xây dựng một danh sách các hành động cần thực hiện. Khi dựng một macro, bạn chọn từng hành động từ danh sách thả xuống, rồi điền thông tin bắt buộc cho từng hành động. Macro cho phép bạn thêm chức năng vào biểu mẫu, báo cáo và điều khiển mà không cần viết mã trong mô-đun Visual Basic for Applications VBA. Macro cung cấp một tập hợp con chứa các lệnh sẵn dùng trong VBA và hầu hết mọi người đều thấy việc dựng macro dễ dàng hơn là viết mã VBA.

Giả sử rằng bạn muốn bắt đầu một báo cáo trực tiếp từ một trong các biểu mẫu mục nhập dữ liệu của bạn. Bạn có thể thêm một nút vào biểu mẫu của bạn và sau đó tạo một macro mở báo cáo. Macro có thể là một macro độc lập (một đối tượng riêng biệt trong cơ sở dữ liệu) được liên kết với thuộc tính sự kiện OnClick của nút, hoặc macro có thể được nhúng trực tiếp vào thuộc tính sự kiện OnClick của các nút đó. Dù bằng cách nào, khi bạn bấm vào nút, macro sẽ chạy và mở báo cáo. Các kiểu macro thường được gọi là các macro giao diện người dùng.

2. Cách sử dụng Record Macro 

Giả thuyết đặt ra:
Mỗi ngày lãnh đạo đều yêu cầu bạn phải báo cáo công việc và gửi email nhắc nhở công việc cho tất cả nhân viên trong công ty. Báo cáo có nhiều nội dung, phải gửi đi đúng giờ. Nếu các bạn làm báo cáo bằng cách truyền thống thì phải tốn rất nhiều thời gian. Khả năng chậm trễ và không đúng yêu cầu là điều thường xuyên gặp phải.

Các bước làm báo cáo hoặc gửi email cho nhân viên được lập đi lập lại giống nhau. Bạn muốn có một công cụ giúp bạn tự động làm báo cáo, tự động gửi báo cáo đi, tự động gửi email nhắc nhở nhân viên, ... 

Giải pháp cụ thể:
Bạn cứ yên tâm, VBA hoàn toàn có thể làm điều này giúp bạn. Chỉ với một cú click chuột vào một nút nhấn Start. Sau đó bạn chỉ cần ngồi thưởng thức cafe, xem Office tự làm tất tần tật. Điều này thật là tuyệt vời và phấn khích phải không ạ. Các bạn xem các phần sau để nắm vững và làm được một công cụ riêng cho bản thân mình nhé.

Tạo chương trình thực thi bằng Record Macro

Quay trở về chủ đề chính trong mục này nhé. Để sử dụng tính năng Recor Macro thì các bạn có 2 cách để mở. 
    • Cách 1: chọn thẻ View \ Record Macro...
    • Cách 2: nhấp vào thẻ Developer \ Record Macro...



Nếu trên Excel của các bạn chưa có thẻ Developer thì các bạn có thể tham khảo bài viết dưới đây:

style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-2710840940759095"
data-ad-slot="6573006073">





Tính năng này có ý nghĩa là bắt buộc Excel phải học tất cả các bước mà chúng ta đã thao tác trên Excel. Giống như bắt Excel học việc, và chúng ta là người dạy việc các bạn nhé. Để bắt đầu Record lại quá trình làm việc trên Excel. Điều đầu tiên là các bạn nhấp vào nút Record Macro để khung Record Macro xuất hiện. Trên khung này các bạn đặt tên cho quá trình Record của mình, và nhấp OK để bắt đầu quá trình. Lúc này nút Record Macro sẽ chuyển thành tên Stop Recording và quá trình Record đã bắt đầu diễn ra.

Bạn muốn kết thúc quá trình Record thì nhâp tiếp vào nút Stop Recording nhé. Các thao tác của bạn trên Excel đã được ghi lại vào Module 1. Để xem quá trình Record đã ghi lại những gì, các bạn nhấp vào thẻ Developer, rồi nhấp tiếp nút Visual Basic. Khung soạn thảo code VBA sẽ xuất hiện, và các bạn sẽ nhận được một đoạn code tương tự như hình.



Excel chỉ mới tạm thời ghi lại quá trình làm việc của các bạn vào trong Module 1. Để sử dụng lại được đoạn chương trình này thì các bạn phải gán chúng vào một nút lệnh. Cách gán vào nút lệnh thì mời các bạn xem mục kế tiếp.

Gán chương trình thực thi vào nút lệnh

Trên worksheet hiện tại, các bạn chèn một nút lệnh vào. Cửa sổ Assign Macro xuất hiện, tại đây các bạn chọn Macro đã Record trước đó. Nhấp OK để hoàn tất việc gán chương trình thực thi cho nút lệnh.




Lưu lại thành tệp dưới dạng macro

Nếu như các bạn lưu lại như bình thường với định dạng file *.xlsx, thì tất cả các lệnh đã Record sẽ mất hết. Để có thể lưu lại file với các đoạn code kèm theo thì các bạn phải lưu lại dưới định dạng *.xlsm.
Từ worksheet hiện tại, các bạn chọn Save As. Nhập tên ở mục File name, ở mục Save as type, nhấp chọn loại Excel Macro-Enabled Workbook (*.xlsm). Cuối cùng nhấp nút Save hoàn tất việc lưu lại. 



Add-Ins trong Excel là gì?

1. Định nghĩa Add-Ins trong Excel

- Add-ins trong Excel được hiểu đơn giản là một đoạn mã do người dùng, hoặc do nhà phát triển tạo ra để thêm vào Excel. Đó là một số tiện ích như các hàm, các form, ... dùng để thực thi một nhiệm vụ hay một công việc nào đó.
- Khi Add-ins được thêm vào Excel thì toàn bộ file excel trong máy tính sẽ được sử dụng tiện ích của Add-ins đó. Điều này có nghĩa là phạm vi ảnh hưởng của Add-ins rộng hơn Macro.
- Add-ins được tạo ra với mục đích làm cho công việc của người dùng ngày càng nhanh hơn, tạo ra một lần sử dụng được nhiều lần.

2. Cách tạo ra Add-Ins trong Excel

Sau khi các bạn thiết kế một chương trình, hoặc Record một quá trình hoàn tất. Các bạn chọn Save As, chọn đường dẫn lưu file. Tại vị trí "Save as type", các bạn nhấp chon định dạng Excel Add-In (*.xlam) như hình dưới.



Đường dẫn mặc định của Add-In là:
  • C:\Users\tosan\AppData\Roaming\Microsoft\AddIns
Phần được tô đỏ là User của máy tính, tùy máy tính có tên gì mà phần này cũng khác nhau.

3. Cách sử dụng Add-Ins trong Excel

Add-Ins nếu được thêm vào Excel, thì xem như là một phần của Excel. Nên bất cứ khi nào các bạn mở Excel lên, thì Add-in cũng dược tải lên cùng. Đồng thời Add-Ins này cũng có thể gán vào các nút trên thanh Ribbon.

Để add các Add-Ins vào Excel, các bạn nhấp vào nút "Excel Add-Ins" trên thẻ Developer. Tiếp theo các bạn nhấp chọn Browse... tìm đến nơi đã lưu file Add-Ins. Các bạn chọn file và nhấp OK để hoàn tất.





Đồng thời các bạn có thể chèn thêm một thẻ trên Ribbon của Ecxel. Trên thẻ các bạn có thể thêm các nút lệnh để thực thi các Add-Ins này như hình:






Mời các bạn đón xem tiếp bài:
    • Tạo thêm Tab trên Ribbon trong Microsoft Excel

Bài 1: Làm quen với lập trình Visual Basic for Application (VBA) trên Excel




{tocify} $title={Table of Contents}


1. Visual Basic for Application (VBA) là gì?



Visual Basic for Application là một loại ngôn ngữ lập trình do Microsoft phát triển, được tích hợp lên Micosoft Word, Excel, PowerPoint, Outlook. Bài viết này mình sẽ cùng các bạn làm quen với giao diện VBA trên Excel (Excel 2016).



2. Bật thẻ Developer trên Excel



Trên Excel mặc định thẻ Developer này bị ẩn bên trong. Để bật tab này lên thì các bạn nhấp vào tthẻ File trên Excel, tiếp tục nhấp vào Option. Cửa sổ Excel Option xuất hiện, các bạn chọn Customize Ribbon như hình:



Check vào mục Developer như hình trên, rồi nhấp vào nút OK để bật thẻ. Các bạn thấy thẻ này xuất hiện trên thanh Ribbon (1) của Excel như hình bên dưới. Thẻ này chứa rất nhiều tính năng hay, cho phép các bạn thỏa sức tạo ra các ứng dụng hữu hiệu cho công việc của chính mình. 
Giao diện thao tác nhiều nhất trên thẻ này là trình soạn thảo code. Để vào trình soạn thảo code VBA thì các bạn nhấp vào biểu tượng Visual Basic (2).



Cửa sổ soạn thảo code này được chia làm ba khu vực quan trọng:
  • Khu vực 3: nơi để bạn khai báo biến, tạo các hàm và thủ tục.
  • Khu vực 4: nơi chứa tất cả các Macro, Project trên Workbook hiện hành.
  • Khu vực 5: nơi hiển thị các thuộc tính của đối tượng được chọn trên khu vực 4
Bây giờ chúng ta cùng làm một ví dụ nho nhỏ để làm quen với lập trình VBA trên Excel.

Yêu cầu:
Tạo một nút nhấn trên worksheet, khi bạn nhấp vào nút nhấn này thì Excel sẽ xuất ra một thông báo với nội dung "Hello World!".

Lời giải:
- Bước 1: Tại thẻ Developer, các bạn nhấp vào nút Insert, tiếp theo nhấp chọn nút Button. Sau đó các bạn ghê chuột để vẽ một hình chữ nhật trên worksheet.


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-2710840940759095"
data-ad-slot="6573006073">




Khi vừa vẽ xong một nút nhấn, Excel xuất hiện khung Assign Macro. Khung này yêu cầu các bạn thiết lập một chương trình mới. Chương trình này sẽ được thực thi khi bạn nhấn vào nút mới tạo. 

- Bước 2: Đặt tên cho chương trình thực thi
Các bạn đặt tên cho chương trình thực thi của nút Button. Trong ví dụ này tôi đặt là Thong_Diep. Đặt tên xong, các bạn nhấp vào nút New để kết thúc việc đặt tên. Khung soan thảo VBA xuất hiện, trên khung soạn code có cặp Sub và End Sub biểu thị cho sự bắt đầu và kết thúc một chương trình thực thi. Giữa cặp Sub là nơi để cho các bạn viết các đoạn code.




- Bước 3: Viết lênh cho chương trình thực thi
Để hiển thị thông điệp trên Excel, các bạn dùng hàm MsgBox() do Excel hỗ trợ sẵn. Hàm MsgBox() này cho phép bạn xuất ra thông điệp đến người dùng, cũng có thể nhận giá trị trả về khi người dùng nhấp chọn các nút lệnh trên MsgBox(). 

Để vào lại đúng vị trí của chương trình mới tạo trên trình soạn code, thì các bạn nhấp phải vào nút nhấn, chọn Assign Macro...
Đặt con nháy giữa cặp Sub và đánh vào đoạn lệnh:
    •     Msgbox "Hello Word!"
Xong thì các bạn chuyển sang cửa sổ worksheet chứa nút nhấn. Các bạn nhấp vào nút nhấn để tận hưởng thành quả ban đầu nhé.




Để thay đổi text hiển thị trên nút nhấn thì các bạn nhấp chuột phải vào nút nhấn, tiếp theo nhấp chuột trái vào nút nhấn sẽ có thể thay đổi được text.
Nếu các bạn có thắc mắc gì xin comment bên dưới. Tôi sẽ sẵn sàng trả lời. Good luck!