TOP 20 mã Macro VBA-Excel thường dùng

VBA là viết tắt của Visual Basic for Applications – một ngôn ngữ lập trình mạnh mẽ được sử dụng để tùy chỉnh và thay đổi chức năng của các ứng dụng Microsoft. Sử dụng VBA trong Excel giúp tăng hiệu suất công việc bằng cách tự động hóa các thao tác thủ công trong việc xử lý dữ liệu và tạo báo cáo. Đây thực sự là một công cụ hữu ích, tuy nhiên, nếu bạn không biết cách viết mã VBA, bạn sẽ không thể tận dụng được tiềm năng của công cụ này. Vì vậy, hãy cùng tìm hiểu top 20 mã VBA cơ bản và mã định dạng trong Excel để nâng cao kỹ năng của bạn.

Mã cơ bản

Mã cơ bản VBA giúp bạn thực hiện nhanh chóng một số tác vụ cơ bản trong bảng tính của mình.

1. Thêm số series

Sub AddSerialNumbers()
    Dim i As Integer

    On Error GoTo Last
    i = InputBox("Nhập giá trị", "Nhập số series")

    For i = 1 To i
        ActiveCell.Value = i
        ActiveCell.Offset(1, 0).Activate
    Next i

Last: Exit Sub
End Sub

2. Chèn nhiều cột bằng VBA

Sub InsertMultipleColumns()
    Dim i As Integer
    Dim j As Integer

    ActiveCell.EntireColumn.Select

    On Error GoTo Last
    i = InputBox("Nhập số lượng cột cần chèn", "Chèn cột")

    For j = 1 To i
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightorAbove
    Next j

Last: Exit Sub
End Sub

3. Chèn nhiều hàng

Sub InsertMultipleRows()
    Dim i As Integer
    Dim j As Integer

    ActiveCell.EntireRow.Select

    On Error GoTo Last
    i = InputBox("Nhập số lượng hàng cần chèn", "Chèn hàng")

    For j = 1 To i
        Selection.Insert Shift:=xlToDown, CopyOrigin:=xlFormatFromRightorAbove
    Next j

Last: Exit Sub
End Sub

4. Tự động căn chỉnh cột

Sub AutoFitColumns()
    Cells.Select
    Cells.EntireColumn.AutoFit
End Sub

5. Tự động căn chỉnh hàng

Sub AutoFitRows()
    Cells.Select
    Cells.EntireRow.AutoFit
End Sub

6. Xóa Wrap Text

Sub RemoveTextWrap()
    Range("A1").WrapText = False
End Sub

7. Bỏ hợp nhất các ô

Sub UnmergeCells()
    Selection.UnMerge
End Sub

8. Mở Calculator

Sub OpenCalculator()
    Application.ActivateMicrosoftApp Index:=0
End Sub

9. Thêm ngày vào Header/Footer

Sub DateInHeader()
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = "&D"
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
    End With
End Sub

10. Tùy chỉnh Header/Footer

Sub CustomHeader()
    Dim myText As String
    myText = InputBox("Nhập nội dung tùy chỉnh", "Nhập văn bản")

    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = myText
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
    End With
End Sub

##Mã định dạng
Mã định dạng VBA giúp bạn định dạng các ô và phạm vi ô trong Excel dựa trên điều kiện cụ thể.

###1. Đánh dấu các bản sao từ vùng chọn
```vba
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

2. Đánh dấu hàng và cột

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

3. Đánh dấu 10 giá trị hàng đầu

Sub TopTen()
    Selection.FormatConditions.AddTop10
    With Selection.FormatConditions(Selection.FormatConditions.Count)
        .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

4. Đánh dấu các dãy được đặt tên

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

5. Đánh dấu giá trị lớn hơn

Sub HighlightGreaterThanValues()
    Dim i As Integer

    i = InputBox("Nhập giá trị lớn hơn", "Nhập giá trị")

    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, _
        Operator:=xlGreater, Formula1:=i

    With Selection.FormatConditions(Selection.FormatConditions.Count)
        .Font.Color = RGB(0, 0, 0)
        .Interior.Color = RGB(31, 218, 154)
    End With
End Sub

6. Đánh dấu giá trị nhỏ hơn

Sub HighlightLowerThanValues()
    Dim i As Integer

    i = InputBox("Nhập giá trị nhỏ hơn", "Nhập giá trị")

    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, _
        Operator:=xlLower, _
        Formula1:=i

    With Selection.FormatConditions(Selection.FormatConditions.Count)
        .Font.Color = RGB(0, 0, 0)
        .Interior.Color = RGB(217, 83, 79)
    End With
End Sub

7. Đánh dấu các số âm

Sub HighlightNegativeNumbers()
    Dim Rng As Range

    For Each Rng In Selection
        If WorksheetFunction.IsNumber(Rng) Then
            If Rng.Value < 0 Then
                Rng.Font.Color = -16776961
            End If
        End If
    Next
End Sub

8. Đánh dấu văn bản cụ thể

Sub HighlightValue()
    Dim myStr As String
    Dim myRg As Range
    Dim myTxt As String
    Dim myCell As Range
    Dim myChar As String
    Dim I As Long
    Dim J As Long

    On Error Resume Next

    If ActiveWindow.RangeSelection.Count > 1 Then
        myTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
        myTxt = ActiveSheet.UsedRange.AddressLocal
    End If

LInput:
    Set myRg = Application.InputBox("Vui lòng chọn dải dữ liệu:", "Chọn dữ liệu", myTxt, , , , , 8)

    If myRg Is Nothing Then Exit Sub

    If myRg.Areas.Count > 1 Then
        MsgBox "Không hỗ trợ nhiều cột"
        GoTo LInput
    End If

    If myRg.Columns.Count <> 2 Then
        MsgBox "Dải dữ liệu đã chọn chỉ có thể chứa hai cột"
        GoTo LInput
    End If

    For I = 0 To myRg.Rows.Count - 1
        myStr = myRg.Range("B1").Offset(I, 0).Value

        With myRg.Range("A1").Offset(I, 0)
            .Font.ColorIndex = 1

            For J = 1 To Len(.Text)
                If Mid(.Text, J, Len(myStr)) = myStr Then
                    .Characters(J, Len(myStr)).Font.ColorIndex = 3
                End If
            Next
        End With
    Next I
End Sub

9. Đánh dấu các ô có chú thích

Sub HighlightCommentCells()
    Selection.SpecialCells(xlCellTypeComments).Select
    Selection.Style = "Note"
End Sub

10. Đánh dấu các hàng thay thế trong vùng chọn


Sub HighlightAlternateRows()
    Dim rng As Range

    For Each rng In Selection.Rows
        If rng.Row Mod 2 = 1 Then
            rng.Style = "20% -Accent1"
            rng.Value = rng.Value ^ (1 / 3)
        Else
            ' Do nothing
        End If
    Next rng
End Sub

**Xem thêm**
- [Khóa học Ứng dụng VBA trong Excel](#)
- [Tổng hợp các thuật ngữ quan trọng trong VBA](#)
- [Cách thêm, xóa, chặn nhận xét trong Excel VBA](#)
- [Tải tài liệu miễn phí] Template Update tỷ giá tự động bằng Power Query, Dashboard và VBA](#)
FEATURED TOPIC