Thư viện code VBA trong Excel hữu ích cho người mới bắt đầu

Mã macro Excel (viết tắt là VBA) được sử dụng để tự động hóa một số tác vụ trên phần mềm làm việc trên Excel mà không cần chúng ta phải thực hiện chúng một cách thủ công. Phần mềm này sẽ giúp bạn tiết kiệm được thời gian làm việc và đưa ra được những thông tin, kết quả chính xác và đáng tin cậy. Hôm nay, upanh123.com xin gửi tới bạn thư viện code VBA trong Excel, cách viết chương trình bằng Excel, một số đoạn code hay và một số ví dụ về VBA trong Excel.

Nội Dung Chính

Cách viết chương trình bằng Excel

Trước khi đi tìm hiểu về thư viện code VBA trong Excel thì chúng ta sẽ đi tìm hiểu về các bước viết chương trình bằng Excel. Excel Macros được xem là một chương trình có thể giúp chúng ta thực hiện những thao tác lặp lại từ đơn giản cho tới nâng cao. Khi làm việc trên chương trình này, chúng ta sẽ phải tìm hiểu thêm rất nhiều thông tin khác như Outlook Macro, PowerPoint Macro, Word Macro.

Cách viết chương trình bằng Excel

Cách viết chương trình bằng Excel

VBA là viết tắt của Visual Basic for Applications, đây chính là một ngôn ngữ lập trình đi kèm với một số phần mềm của Microsoft. Để bắt đầu viết chương trình bằng Excel Macros nói riêng và Macros nói chung thì bước đầu tiên chúng ta cần mở được trình soạn thảo VBA. Các bước thực hiện như sau: 

Bước 1: Ở trong bảng Excel, tiến hành nhấn chuột phải vào thanh Ribbon, kích chọn Customize the Ribbon.

Bước 2: Một cửa sổ Excel Options hiện lên, chọn mục Developer.

Bước 3: Thẻ Developer sẽ xổ xuống, tiến hành chỉnh sửa Macro Security bằng cách nhấn vào nhóm code, chọn Macro Security.

Bước 5: Bấm Ctrl + S để lưu file. 

Bước 6: Tiến hành mở trình soạn thảo VBA bằng cách nhấn vào thẻ Developer, chọn Visual Basic để bắt đầu nhập code. 

Bước 7: Khi cửa sổ của VBA hiện lên thì chúng ta tiến hành viết code vào cửa sổ này. 

Bước 8: Tiến hành thêm 1 Module mới vào

Bước 9: Ở vị trí Module thì chúng ta tiến hành đổi tên Module và gõ mấy dòng code đầu tiên xem thử. Nếu chúng ta bấm nút chạy mà chương trình không bị lỗi thì chúng ta đã thực hiện viết code VBA thành công.

Các đoạn code hay trong Excel

Thư viện code VBA trong Excel hữu ích cho người mới bắt đầu được chia sẻ dưới đây chắc chắn sẽ hỗ trợ bạn rất nhiều trong việc hoàn thành công việc.

Các đoạn code hay trong Excel

Các đoạn code hay trong Excel như sau: 

Sub CopyWorksheetToNewWorkbook()

ThisWorkbook.ActiveSheet.Copy _

Before:=Workbooks.Add.Worksheets(1)

Sub CloseAllWorkbooks()

Dim wbs As Workbook

For Each wbs In Workbooks

wbs.Close SaveChanges:=True

Sub FileBackUp()

ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & _

“” & Format(Date, “mm-dd-yy”) & ” ” & _

Sub DisablePageBreaks()

Dim wbAs Workbook

Dim wksAs Worksheet

Application.ScreenUpdating= False

For Each wbIn Application.Workbooks

For Each ShtIn wb.WorksheetsSht.DisplayPageBreaks= False

Next Sht

Next wb

Application.ScreenUpdating= True

Sub SaveWorkshetAsPDF()

Dimws As Worksheet

For Each ws In Worksheetsws.ExportAsFixedFormat xlTypePDF,

“ENTER-FOLDER-NAME-HERE” & ws.Name & “.pdf” Nextws

Sub UnhideRowsColumns()

Columns.EntireColumn.Hidden = False

Rows.EntireRow.Hidden = False

Sub deleteBlankWorksheets()

Dim Ws As Worksheet

On Error Resume Next

Application.ScreenUpdating= False

Application.DisplayAlerts= False

For Each Ws In Application.Worksheets

If Application.WorksheetFunction.CountA(Ws.UsedRange) = 0 Then

Ws.Delete

End If

Next

Application.ScreenUpdating= True

Application.DisplayAlerts= True

End Sub

Unhide all Rows and Columns

Sub lockCellsWithFormulas()

With ActiveSheet

.Unprotect

.Cells.Locked = False

.Cells.SpecialCells(xlCellTypeFormulas).Locked = True

.Protect AllowDeletingRows:=True

End With

End Sub

Delete all Blank Worksheets

Sub SortWorksheets()

Dim i As Integer

Dim j As Integer

Dim iAnswer As VbMsgBoxResult

iAnswer = MsgBox(“Sort Sheets in Ascending Order?” & Chr(10) _

& “Clicking No will sort in Descending Order”, _

vbYesNoCancel + vbQuestion + vbDefaultButton1, “Sort

Worksheets”)

For i = 1 To Sheets.Count

For j = 1 To Sheets.Count – 1

If iAnswer = vbYes Then

If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then

Sheets(j).Move After:=Sheets(j + 1)

End If

ElseIf iAnswer = vbNo Then

If UCase$(Sheets(j).Name)

Sheets(j).Move After:=Sheets(j + 1)

End If

End If

Next j

Next i

End Sub

Protect all the Cells With Formulas

Sub UnprotectWS()

ActiveSheet.Unprotect “mypassword”

End Sub

Sort Worksheets

Mac code tắt protect worksheet.

Sub ProtectWS()

ActiveSheet.Protect “mypassword”, True, True

End Sub

Un-Protect Worksheet

Sub InsertMultipleSheets()

Dim i As Integer

i = InputBox(“Enter number of sheets to insert.”, “Enter

Multiple Sheets”)

Sheets.Add After:=ActiveSheet, Count:=i

End Sub

Protect worksheet

Sub Resize_Charts()

Dim i As Integer

For i = 1 To ActiveSheet.ChartObjects.Count

With ActiveSheet.ChartObjects(i)

.Width = 300

.Height = 200

End With

Next i

End Sub

Insert Multiple Worksheets

Sub ProtectAllWorskeets()

Dim ws As Worksheet

Dim ps As String

ps = InputBox(“Enter a Password.”, vbOKCancel)

For Each ws In ActiveWorkbook.Worksheets

ws.Protect Password:=ps

Next ws

End Sub

Resize All Charts in a Worksheet.

Sub DeleteWorksheets()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

If ws.name ThisWorkbook.ActiveSheet.name Then

Application.DisplayAlerts = False

ws.Delete

Application.DisplayAlerts = True

End If

Next ws

End Sub

Protect all Worksheets Instantly

Sub UnhideAllWorksheet()

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets

ws.Visible = xlSheetVisible

Next ws

End Sub

Delete all but the Active Worksheet

Sub HideWorksheet()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

If ws.Name ThisWorkbook.ActiveSheet.Name Then

ws.Visible = xlSheetHidden

End If

Next ws

End Sub

Unhide all Hidden Worksheets

Sub printCustomSelection()

Dim startpageAs Integer

Dim endpageAs Integer

startpage= InputBox(“Please Enter Start Page number.”, “Enter

Value”)

If Not WorksheetFunction.IsNumber(startpage) Then

MsgBox”Invalid Start Page number. Please try again.”, “Error”

Exit Sub

End If

endpage= InputBox(“Please Enter End Page number.”, “Enter

Value”)

If Not WorksheetFunction.IsNumber(endpage) Then

MsgBox”Invalid End Page number. Please try again.”, “Error”

Exit Sub

End If

Selection.PrintOutFrom:=startpage, To:=endpage, Copies:=1,

Collate:=True

End Sub

Worksheet Codes

Mã code để in phạm vi trang điều chỉnh.

Sub printSelection()

Selection.PrintOutCopies:=1, Collate:=True

End Sub

Print Custom Pages

Sub printComments()

With ActiveSheet.PageSetup

.printComments= xlPrintSheetEnd

End With

End Sub

Print Narrow Margin

Sub rowDifference()

Range(“H7:H8,I7:I8”).Select

Selection.RowDifferences(ActiveCell).Select

Selection.Style= “Bad”

End Sub

Printing Codes

Sub columnDifference()

Range(“H7:H8,I7:I8”).Select

Selection.ColumnDifferences(ActiveCell).Select

Selection.Style= “Bad”

End Sub

Highlight Difference in Rows

Sub highlightUniqueValues()

Dim rng As Range

Set rng = Selection

rng.FormatConditions.Delete

Dim uv As UniqueValues

Set uv = rng.FormatConditions.AddUniqueValues

uv.DupeUnique = xlUnique

uv.Interior.Color = vbGreen

End Sub

Highlight Difference in Columns

Sub highlightMinValue()

Dim rng As Range

For Each rng In Selection

If rng = WorksheetFunction.Min(Selection) Then

rng.Style = “Good”

End If

Next rng

End Sub

Highlight Unique Values

Sub highlightMaxValue()

Dim rng As Range

For Each rng In Selection

If rng = WorksheetFunction.Max(Selection) Then

rng.Style = “Good”

End If

Next rng

End Sub

Highlight Min Value In The Range

Sub blankWithSpace()

Dim rng As Range

For Each rng In ActiveSheet.UsedRange

If rng.Value = ” ” Then

rng.Style = “Note”

End If

Next rng

End Sub

Highlight Max Value In The Range

Sub highlightSpecificValues()

Dim rng As Range

Dim i As Integer

Dim c As Variant

c = InputBox(“Enter Value To Highlight”)

For Each rng In ActiveSheet.UsedRange

If rng = c Then

rng.Style = “Note”

i = i + 1

End If

Next rng

MsgBox “There are total ” & i &” “& c & ” in this worksheet.”

End Sub

Highlight all the Blank Cells Invisible Space

Sub highlightErrors()

Dim rng As Range

Dim i As Integer

For Each rng In ActiveSheet.UsedRange

If WorksheetFunction.IsError(rng) Then

i = i + 1 rng.Style = “bad”

End If

Next rng

MsgBox “There are total ” & i & ” error(s) in this worksheet.”

End Sub

Highlight Cells with a Specific Text in Worksheet

Sub HighlightMisspelledCells()

Dim rng As Range

For Each rng In ActiveSheet.UsedRange

If Not Application.CheckSpelling(word:=rng.Text) Then

rng.Style= “Bad” End If

Next rng

End Sub

Highlight Cells With Error in the Entire Worksheet

Sub highlightAlternateRows()

Dim rng As Range

For Each rng In Selection.Rows

If rng.RowMod 2 = 1 Then

rng.Style= “20% -Accent1”

rng.Value= rng^ (1 / 3)

Else

End If

Next rng

End Sub

Highlight Cells with Misspelled Words

Sub highlightCommentCells()

Selection.SpecialCells(xlCellTypeComments).Select

Selection.Style= “Note”

End Sub

Highlight Alternate Rows in the Selection

Sub highlightNegativeNumbers()

Dim Rng As Range

For Each Rng In Selection

If WorksheetFunction.IsNumber(Rng) Then

If Rng.Value

Rng.Font.Color= -16776961

End If

End If

Next

End Sub

Highlight Specific Text

Sub HighlightLowerThanValues()

Dim i As Integer

i = InputBox(“Enter Lower Than Value”, “Enter Value”)

Selection.FormatConditions.Delete

Selection.FormatConditions.Add Type:=xlCellValue,

Operator:=xlLower, Formula1:=i

Selection.FormatConditions(Selection.FormatConditions.Count).S

tFirstPriority

With Selection.FormatConditions(1)

.Font.Color = RGB(0, 0, 0)

.Interior.Color = RGB(217, 83, 79)

End With

End Sub

Highlight Negative Numbers

Sub HighlightGreaterThanValues()

Dim i As Integer

i = InputBox(“Enter Greater Than Value”, “Enter Value”)

Selection.FormatConditions.Delete

Selection.FormatConditions.Add Type:=xlCellValue,

Operator:=xlGreater, Formula1:=i

Selection.FormatConditions(Selection.FormatConditions.Count).S

tFirstPriority

With Selection.FormatConditions(1)

.Font.Color = RGB(0, 0, 0)

.Interior.Color = RGB(31, 218, 154)

End With

End Sub

Highlight Lower than Values

Sub HighlightRanges()

Dim RangeName As Name

Dim HighlightRange As Range

On Error Resume Next

For Each RangeName In ActiveWorkbook.Names

Set HighlightRange = RangeName.RefersToRange

HighlightRange.Interior.ColorIndex = 36

Next RangeName

End Sub

Highlight Greater than Values

Sub TopTen()

Selection.FormatConditions.AddTop10

Selection.FormatConditions(Selection.FormatConditions.Count).S

tFirstPriority

With Selection.FormatConditions(1)

.TopBottom = xlTop10Top

.Rank = 10

.Percent = False

End With

With Selection.FormatConditions(1).Font

.Color = -16752384

.TintAndShade = 0

End With

With Selection.FormatConditions(1).Interior

.PatternColorIndex = xlAutomatic

.Color = 13561798

.TintAndShade = 0

End With

Selection.FormatConditions(1).StopIfTrue = False

End Sub

Highlight Named Ranges

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,

Cancel As Boolean)

Dim strRange As String

strRange = Target.Cells.Address & “,” Target.Cells.EntireColumn.Address & “,” & _

Target.Cells.EntireRow.Address

Range(strRange).Select

End Sub

Highlight Top 10 Values

Sub HighlightDuplicateValues()

Dim myRange As Range

Dim myCell As Range

Set myRange = Selection

For Each myCell In myRange

If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then

myCell.Interior.ColorIndex = 36

End If

Next myCell

End Sub

Highlight the Active Row and Column

Sub customHeader()

Dim myText As Stringmy

Text = InputBox(“Enter your text here”, “Enter Text”)

With ActiveSheet.PageSetup

.LeftHeader = “”

.CenterHeader = myText

.RightHeader = “”

.LeftFooter = “”

.CenterFooter = “”

.RightFooter = “”

End With

End Sub

Formatting Codes

Sub dateInHeader()

With ActiveSheet.PageSetup

.LeftHeader = “”

.CenterHeader = “&D”

.RightHeader = “”

.LeftFooter = “”

.CenterFooter = “”

.RightFooter = “”

End With

ActiveWindow.View = xlNormalView

End Sub

Sub OpenCalculator()

Application.ActivateMicrosoftApp Index:=0

End Sub

Sub UnmergeCells()

Selection.UnMerge

End Sub

Open Calculator (mở máy tính trên excel)

Sub RemoveWrapText()

Cells.Select

Selection.WrapText = False

Cells.EntireRow.AutoFit

Cells.EntireColumn.AutoFit

End Sub

Sub AutoFitRows()

Cells.Select

Cells.EntireRow.AutoFit

End Sub

Remove Text Wrap (bỏ chế độ wrap text)

Sub AutoFitColumns()

Cells.Select

Cells.EntireColumn.AutoFit

End Sub

Sub InsertMultipleRows()

Dim i As Integer

Dim j As Integer

ActiveCell.EntireRow.Select

On Error GoTo Last

i = InputBox(“Enter number of columns to insert”, “Insert

Columns”)

For j = 1 To i

Selection.Insert Shift:=xlToDown,

CopyOrigin:=xlFormatFromRightorAbove

Next j

Last:Exit Sub

End Sub

Sub InsertMultipleColumns()

Dim i As Integer

Dim j As Integer

ActiveCell.EntireColumn.Select

On Error GoTo Last

i = InputBox(“Enter number of columns to insert”, “Insert Columns”)

For j = 1 To i

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightorAbove

Next j

Last:Exit Sub

End Sub

Sub AddSerialNumbers()

Dim i As Integer

On Error GoTo Last

i = InputBox(“Enter Value”, “Enter Serial Numbers”)

For i = 1 To i

ActiveCell.Value = i

ActiveCell.Offset(1, 0).Activate

Next i

Last:Exit Sub

End Sub

Trên đây là thư viện code VBA trong Excel hữu ích mà bất cứ ai, dù là chuyên hay không chuyên Excel Macros cũng đều cần phải biết. 

Ví dụ VBA trong Excel

Khi mới học về VBA, chắc hẳn chúng ta sẽ chưa hình dung được các bước sử dụng VBA hay cách sử dụng thư viện code VBA trong Excel như thế nào cho hiệu quả. Trong VBA, chúng ta có thể tạo ra được rất nhiều chức năng khác nhau, Một số ví dụ VBA trong Excel như sau: 

– Gộp nhiều file vào 1 file: Thay vì phải copy paste từng file Excel, bạn hãy nghĩ tới việc có thể để Excel tự làm việc này cho bạn. Bấm 1 nút, dữ liệu ở hàng trăm file Excel sẽ được tự động gộp lại vào 1 file duy nhất.

– Thay vì mất hàng giờ để trích xuất / in ấn tài liệu theo từng trang, giờ đây bạn chỉ cần viết 1 đoạn mã và để Excel tự động làm việc đó cho bạn. Trích xuất dữ liệu từ Excel ra PDF mà có quá nhiều trang, VBA có thể tự động việc này. Với VBA, những thao tác như lưu trữ, trích xuất, in ấn,… chúng ta hoàn toàn có thể được thực hiện một cách tự động chỉ với 1 cú nhấp chuột trong VBA. 

– VBA có thể giảm bớt các công thức trong file mà vẫn giữ nguyên được kết quả. VBA sẽ giúp file Excel của bạn trở nên gọn, nhẹ hơn rất nhiều mà không làm thay đổi chức năng vốn có của nó. Điều này tưởng khó khăn nhưng hóa ra lại hết sức đơn giản khi bạn chỉ cần vài đoạn code ngắn trong VBA.

Ví dụ VBA trong Excel

Ví dụ VBA trong Excel

– Tự động thay đổi hình ảnh theo tên được chọn trong 1 danh sách. 

– Tự động lọc danh sách không trùng bằng Remove Duplicates hay Advanced Filter. Bằng cách ghi lại các thao tác này với chức năng Record Macro, bạn đã có thể dễ dàng có được các đoạn mã code trong VBA.

– Tự động hóa các báo cáo bằng VBA. Chỉ với 1 cú click chuột, toàn bộ báo cáo phức tạp của bạn đã được cập nhật hoàn toàn tự động! Bạn có thể khiến chức năng Advanced Filter trở nên tự động mỗi khi bạn thay đổi điều kiện báo cáo. Khi đó toàn bộ kết quả báo cáo sẽ được cập nhật lại theo điều kiện mới.

– Ẩn / hiện các Sheet một cách linh hoạt: Với những file Excel có rất nhiều Sheet, VBA có thể kết hợp đồng thời thao tác Chọn Sheet + Ẩn / hiện Sheet, bạn hoàn toàn có thể linh hoạt trong việc:

– Tạo ra chức năng đăng nhập bằng tài khoản để mở file Excel. 

Cấu trúc code trong VBA

Mã macro có thể tự tạo ra bằng cách viết tay mã VBA mà không cần dùng tới thư viện code VBA trong Excel. Trong macro đã có tích hợp sẵn thư viện Gitiho giúp chúng ta sao chép và dán các đoạn mã code khác nhau một cách dễ dàng. Cấu trúc code trong VBA sẽ tùy thuộc vào các đoạn code và mục đích của bạn. Các bước sử dụng mã từ thư viện code VBA trong Excel như sau: 

Bước 1: Bên trong giao diện của bảng tính Excel, ấn chọn Developer, kích chọn Visual Basic hoặc nhấn tổ hợp phím Alt + F11. Một cửa sổ Visual Basic hiện lên, kích chọn mục Project Explorer ở bên tay trái. Đây chính là cửa sổ hiển thị các sổ làm việc đang mở và các dự án khác.

Bước 2: Chọn cửa sổ mà chúng ta muốn chèn mã VBA vào và nhấn chọn Insert, tiếp đó nhấn chọn Module.

Bước 3: Sao chép mã từ thư viện code VBA trong Excel và dán vào bài viết này từ cửa sổ Project Explorer. 

Bước 4: Chọn tiếp Developer, kích chọn Macros. Lúc này chúng ta nhấn vào Run để xem các danh sách file Excel bên trong. Bên trong cửa sổ của Macros sẽ hiển thị một danh mục có tên là Events, đây chính là mục lưu trữ các mô-đun và thực hiện theo quy trình được giải thích ở trên.

Cấu trúc code trong VBA

Cấu trúc code trong VBA

Bước 1: Ở giao diện bảng tính của Excel, kích chọn Customize Quick Access Toolbar, nhấp chuột vào More Commands.

Bước 2: Một danh sách xổ xuống, tìm mục Choose commands from, nhấn chọn macro và nhấp vào Add.

Bước 3: Tiếp đó, chúng ta nhấp vào nút Modify để thay đổi các mã VBA, dán hoặc xóa chúng. Cuối cùng là nhấn OK để hoàn thành. 

Hiện tại, nút macro đã bắt đầu xuất hiện trên thanh Toolbar của Excel và chúng ta có thể dễ dàng truy cập nhanh chóng phần mềm macro thông qua bất kỳ một trang tính nào.

Lập trình VBA trên điện thoại

Việc sử dụng VBA sẽ giúp chúng ta giảm thời gian hoàn thành công việc. Ngày nay, nhiều người muốn lập trình VBA trên điện thoại. Tuy nhiên, hiện tại các mã lập trình ở thư viện code VBA trong Excel không thể sử dụng trên điện thoại. Kể cả các phiên bản Excel cho di động mới nhất cũng bị hạn chế trong việc sử dụng các mã code VBA. Do đó, chúng ta chỉ có thể sử dụng chúng trên máy tính mà thôi.

Lập trình VBA trên điện thoại

Lập trình VBA trên điện thoại

Chúng ta có một số giải pháp thay thế cho VBA trên điện thoại chính là sử dụng các hàm tính toán cơ bản. Đây là một cách thông dụng, có thể thay thế một số tác vụ. Một số hàm cơ bản như:

Như vậy bài viết trên đây upanh123.com đã gửi tới bạn thư viện code VBA trong Excel, cách viết chương trình bằng Excel, một số đoạn code và một số ví dụ về VBA trong Excel. Hy vọng với những thủ thuật trên đây sẽ giúp rút ngắn được thời gian khi sử dụng Excel này. Chúc các bạn thành công!

Xem thêm: Hàm VLOOKUP trong Excel dùng để làm gì? Cách sử dụng

Office -