BỘ CÔNG CỤ GIÚP BẠN ĐƠN GIẢN HÓA VÀ TĂNG CƯỜNG EXCEL
Mã macro Excel [VBA] hữu ích hàng đầu

Bạn có thể tự động hóa các tác vụ nhỏ cũng như nặng bằng mã VBA.

Và bạn có biết?

Với sự trợ giúp của macro …

…bạn có thể phá vỡ mọi giới hạn của Excel mà bạn nghĩ rằng Excel có.

Và hôm nay, tôi đã liệt kê một số ví dụ về mã hữu ích để giúp bạn làm việc hiệu quả hơn trong công việc hàng ngày.

Bạn có thể sử dụng các mã này ngay cả khi bạn chưa sử dụng VBA trước đó.

Nhưng đây là điều đầu tiên cần biết:

Mã Macro là gì?

Trong Excel, mã macro là mã lập trình được viết bằng ngôn ngữ VBA (Visual Basic for Applications).

Ý tưởng đằng sau việc sử dụng mã macro là để tự động hóa một hành động mà bạn thực hiện theo cách thủ công trong Excel.

Ví dụ: bạn có thể sử dụng mã để chỉ in một phạm vi ô cụ thể chỉ bằng một cú nhấp chuột thay vì chọn phạm vi -> Tab Tệp -> In -> Chọn In -> Nút OK.

Cách sử dụng Mã Macro trong Excel

  1. Chuyển đến tab nhà phát triển của bạn và nhấp vào “Visual Basic” để mở Trình chỉnh sửa Visual Basic .
    click-on-visual-basic-editor-before-you-use-these-useful-macros-for-excel
  2. Ở bên trái trong “Project Window”, nhấp chuột phải vào tên sổ làm việc của bạn và chèn một mô-đun mới .
    thêm-mô-đun-để-dán-những-hữu ích-macro-cho-excel
  3. Chỉ cần dán mã của bạn  vào mô-đun và đóng nó.
    sử dụng-hữu ích-macro-mã-ví dụ-bằng-dán-chúng-vào-vb-trình soạn thảo
  4. Bây giờ, hãy chuyển đến tab nhà phát triển của bạn và nhấp vào nút macro.
    hữu ích-macro-mã-ví dụ-để-sử dụng-từ-macro-tùy chọn
  5. Nó sẽ hiển thị cho bạn một cửa sổ có danh sách các macro bạn có trong tệp của mình từ đó bạn có thể chạy macro từ danh sách đó.
    hữu ích-macro-mã-ví dụ-danh sách-từ-macro-tùy chọn

Danh sách 100 ví dụ macro (CODES) hàng đầu cho người mới bắt đầu VBA

Tôi đã thêm tất cả các mã vào các danh mục cụ thể để bạn có thể tìm thấy các mã yêu thích của mình một cách nhanh chóng. Chỉ cần đọc tiêu đề và nhấp vào nó để lấy mã.

ghi chú

Mã cơ bản

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

1. Thêm số đánh dấu

Sub AddSerialNumbers()
Dim i As Integer
On Error GoTo Last
i = InputBox("nhap gia tri", "nhap so thu tu")
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

Sub InsertMultipleColumns()
Dim i As Integer
Dim j As Integer
ActiveCell.EntireColumn.Select
On Error GoTo Last
i = InputBox("Nhập số cột để chèn", "Insert Columns")
For j = 1 To i
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightorAbove
Next j
Last: Exit Sub
End Sub

Mã này giúp bạn nhập nhiều cột chỉ bằng một cú nhấp chuột. Khi bạn chạy mã này, nó sẽ hỏi bạn số cột bạn muốn thêm và khi bạn nhấp vào OK, nó sẽ thêm số cột đã nhập vào sau ô đã chọn. Nếu bạn muốn thêm các cột trước ô đã chọn, hãy thay xlToRight thành xlToLeft trong mã.

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("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

4. Cột tự động điều chỉnh

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

5. Hàng vừa vặn tự động

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

Bạn có thể sử dụng mã này để tự động điều chỉnh tất cả các hàng trong một trang tính. Khi bạn chạy mã này, nó sẽ chọn tất cả các ô trong trang tính của bạn và ngay lập tức tự động điều chỉnh tất cả các hàng.

6. Xóa dòng văn bản

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

Mã này sẽ giúp bạn xóa dòng văn bản khỏi toàn bộ trang tính chỉ bằng một cú nhấp chuột. Trước tiên, nó sẽ chọn tất cả các cột, sau đó xóa dòng văn bản và tự động điều chỉnh tất cả các hàng và cột. Ngoài ra còn có một phím tắt mà bạn có thể sử dụng (Alt + H +‌W) nhưng nếu bạn thêm mã này vào Thanh công cụ truy cập nhanh thì sẽ thuận tiện hơn  phím tắt .

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

Sub UnmergeCells()
Selection.UnMerge
End Sub

Mã này chỉ sử dụng các tùy chọn hủy hợp nhất mà bạn có trên tab HOME‌. Lợi ích của việc sử dụng mã này là bạn có thể thêm nó vào hợp nhất và hủy hợp nhất tất cả các ô trong vùng chọn. Và nếu bạn muốn hủy hợp nhất một phạm vi cụ thể, bạn có thể xác định phạm vi đó trong mã bằng cách thay thế lựa chọn từ.

8. Mở Máy tính

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

Trong Windows, có một máy tính cụ thể và bằng cách sử dụng mã macro này, bạn có thể mở máy tính đó trực tiếp từ Excel. Như tôi đã đề cập rằng nó dành cho windows và nếu bạn chạy mã này trong phiên bản MAC của VBA, bạn sẽ gặp lỗi.

9. Thêm ngày đầu trang/chân trang

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

Macro này thêm ngày vào tiêu đề khi bạn chạy nó. Nó chỉ đơn giản sử dụng thẻ “&D” để thêm ngày. Bạn cũng có thể đổi thành footer hoặc đổi bên bằng cách thay dấu “” bằng thẻ ngày tháng. Và nếu bạn muốn thêm một ngày cụ thể thay vì ngày hiện tại, bạn có thể thay thế thẻ “&D” bằng ngày đó từ mã.

10. Đầu trang/Chân trang tùy chỉnh

Sub CustomHeader()
Dim myText As String
myText = InputBox("Nhập văn bản", "Enter Text")
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = myText
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
End With
End Sub

Khi bạn chạy mã này, nó sẽ hiển thị một hộp nhập yêu cầu bạn nhập văn bản mà bạn muốn thêm làm tiêu đề và sau khi bạn nhập, hãy nhấp vào OK.

Nếu bạn thấy rõ điều này, bạn có sáu dòng mã khác nhau để chọn vị trí cho đầu trang hoặc chân trang. Giả sử nếu bạn muốn thêm chân trang bên trái thay vì tiêu đề ở giữa, chỉ cần thay thế “myText” vào dòng mã đó bằng cách thay thế “” từ đó.

* Mã định dạng

Các mã VBA này sẽ giúp bạn định dạng các ô và phạm vi bằng một số tiêu chí và điều kiện cụ thể.

11. Đánh dấu các bản sao từ vùng chọn bằng màu sắc

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

Macro này sẽ kiểm tra từng ô bạn chọn và đánh dấu các giá trị trùng lặp . Bạn cũng có thể thay đổi màu từ mã.

12. Đánh dấu hàng và cột hiện tại (chọn vào đánh dấu)

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

Tôi thực sự thích sử dụng mã macro này bất cứ khi nào tôi phải phân tích bảng dữ liệu. Dưới đây là các bước nhanh chóng để áp dụng mã này.

  1. Mở VBA (ALT + F11).
  2. Chuyển đến Project Explorer (Ctrl + R, Nếu bị ẩn).
  3. Chọn sổ làm việc của bạn và nhấp đúp vào tên của một trang tính cụ thể mà bạn muốn kích hoạt macro.
  4. Dán mã vào đó và chọn “ BeforeDoubleClick ” từ danh sách thả xuống của sự kiện.
  5. Đóng VBA và bạn đã hoàn tất.

Hãy nhớ rằng, bằng cách áp dụng macro này, bạn sẽ không thể chỉnh sửa ô bằng cách nhấp đúp.

14. Làm nổi bật các phạm vi đượ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

Nếu bạn không chắc mình có bao nhiêu phạm vi đã đặt tên trong trang tính thì bạn có thể sử dụng mã này để đánh dấu tất cả chúng.

16. Làm nổi bật các giá trị thấp hơn

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).StFirstPriority
With Selection.FormatConditions(1)
.Font.Color = RGB(0, 0, 0)
.Interior.Color = RGB(217, 83, 79)
End With
End Sub

Khi bạn chạy mã này, nó sẽ hỏi bạn giá trị mà bạn muốn làm nổi bật tất cả các giá trị thấp hơn.

17. Đánh dấu 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
Chạy mã này. Nó sẽ kiểm tra từng ô trong phạm vi và đánh dấu tất cả các ô mà bạn có số âm.

18. Đá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 _
("please select the data range:", "Selection Required", myTxt, , , , , 8)
If myRg Is Nothing Then
Exit Sub
If myRg.Areas.Count > 1 Then
MsgBox "not support multiple columns"
GoTo LInput
End If
If myRg.Columns.Count <> 2 Then
MsgBox "the selected range can only contain two columns "
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)
Mid(.Text, J, Len(myStr)) = myStrThen
.Characters(J, Len(myStr)).Font.ColorIndex = 3
Next
End With
Next I
End Sub

Giả sử bạn có một tập dữ liệu lớn và bạn muốn kiểm tra một giá trị cụ thể. Đối với điều này, bạn có thể sử dụng mã này. Khi bạn chạy nó, bạn sẽ nhận được một hộp nhập liệu để nhập giá trị cần tìm kiếm.

19. Đánh dấu các ô có nhận xét

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

Để đánh dấu tất cả các ô có nhận xét, hãy sử dụng macro này.

20. Làm nổi bật 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 ^ (1 / 3)
Else
End If
Next rng
End Sub

Bằng cách đánh dấu các hàng thay thế, bạn có thể làm cho dữ liệu của mình dễ đọc và đối với điều này, bạn có thể sử dụng mã VBA bên dưới. Nó sẽ chỉ đánh dấu mọi hàng thay thế trong phạm vi đã chọn.

21. Đánh dấu ô có từ sai chính tả

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

Nếu bạn thấy khó kiểm tra tất cả các ô để tìm lỗi chính tả thì mã này là dành cho bạn. Nó sẽ kiểm tra từng ô từ vùng chọn và đánh dấu ô có từ sai chính tả.

22. Đánh dấu các ô có lỗi trong toàn bộ trang tính

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

Để đánh dấu và đếm tất cả các ô mà bạn gặp lỗi, mã này sẽ giúp bạn. Chỉ cần chạy mã này và nó sẽ trả về một thông báo có số ô lỗi và đánh dấu tất cả các ô.

23. Đánh dấu các ô có văn bản cụ thể trong trang tính

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

Mã này sẽ giúp bạn đếm các ô có giá trị cụ thể mà bạn sẽ đề cập và sau đó đánh dấu tất cả các ô đó.

24. Đánh dấu tất cả các ô trống Invisible Space

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

Đôi khi có một số ô trống nhưng chúng có một khoảng trắng và do đó, rất khó để xác định chúng. Mã này sẽ kiểm tra tất cả các ô trong trang tính và đánh dấu tất cả các ô có một khoảng trắng.

25. Đánh dấu giá trị tối đa trong phạm vi

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

Nó sẽ kiểm tra tất cả các ô đã chọn và đánh dấu ô có giá trị lớn nhất.

26. Đánh dấu giá trị tối thiểu trong phạm vi

Sub Highlight_Min_Value()

Dim rng As Range

For Each rng In Selection
	If rng = WorksheetFunction.Min(Selection) Then
		rng.Style = "Good"
	End If
Next rng

End Sub

Nó sẽ kiểm tra tất cả các ô đã chọn và đánh dấu ô có giá trị Tối thiểu.

27. Làm nổi bật các giá trị duy nhất

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

Mã này sẽ đánh dấu tất cả các ô từ vùng chọn có giá trị duy nhất.

28. Làm nổi bật sự khác biệt trong các cột

Sub columnDifference()
Range("H7:H8,I7:I8").Select
Selection.ColumnDifferences(ActiveCell).Select
Selection.Style= "Bad"
End Sub

Sử dụng mã này, bạn có thể đánh dấu sự khác biệt giữa hai cột (các ô tương ứng).

29. Làm nổi bật sự khác biệt trong hàng

Sub rowDifference()
Range("H7:H8,I7:I8").Select
Selection.RowDifferences(ActiveCell).Select
Selection.Style= "Bad"
End Sub

Và bằng cách sử dụng mã này, bạn có thể đánh dấu sự khác biệt giữa hai hàng (các ô tương ứng).

* Mã in

Các mã macro này sẽ giúp bạn tự động hóa một số tác vụ in, điều này có thể giúp bạn tiết kiệm rất nhiều thời gian.

30. In Nhận xét

Sub printComments()
With ActiveSheet.PageSetup
.printComments = xlPrintSheetEnd
End With
End Sub

Sử dụng macro này để kích hoạt cài đặt in nhận xét ô ở cuối trang. Giả sử bạn có 10 trang để in, sau khi sử dụng mã này, bạn sẽ nhận được tất cả các nhận xét trên trang cuối cùng thứ 11.

31. In lề hẹp

Sub printNarrowMargin()
With ActiveSheet.PageSetup
.LeftMargin = Application
.InchesToPoints (0.25)
.RightMargin = Application.InchesToPoints(0.25)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
End With
ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, _
Collate:=True, _
IgnorePrintAreas:=False
End Sub

Sử dụng mã VBA này để in với lề hẹp. Khi bạn chạy macro này, nó sẽ tự động thay đổi lề thành thu hẹp.

32. Lựa chọn in

Sub printSelection()
Selection.PrintOut Copies:=1, Collate:=True
End Sub

Mã này sẽ giúp bạn in phạm vi đã chọn. Bạn không cần phải đi đến tùy chọn in và đặt phạm vi in. Chỉ cần chọn một phạm vi và chạy mã này.

33. In các trang tùy chỉnh

Sub printCustomSelection()
Dim startpage As Integer
Dim endpage As 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.PrintOut From:=startpage, _
To:=endpage, Copies:=1, Collate:=True
End Sub

Thay vì sử dụng cài đặt từ tùy chọn in, bạn có thể sử dụng mã này để in phạm vi trang tùy chỉnh. Giả sử bạn muốn in các trang từ 5 đến 10. Bạn chỉ cần chạy mã VBA này và nhập trang bắt đầu và trang kết thúc.

Mã bảng tính

Các mã macro này sẽ giúp bạn kiểm soát và quản lý các trang tính một cách dễ dàng và tiết kiệm rất nhiều thời gian của bạn.

34. Ẩn tất cả trừ 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

Bây giờ, giả sử bạn muốn ẩn tất cả các trang tính trong sổ làm việc của mình ngoài trang tính đang hoạt động. Mã macro này sẽ làm điều này cho bạn.

Liên quan: Danh sách chức năng VBA

35. Bỏ ẩn tất cả các Worksheet ẩn

Sub UnhideAllWorksheet()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws
End Sub

Và nếu bạn muốn bỏ ẩn tất cả các trang tính mà bạn đã ẩn bằng mã trước đó, thì đây là mã cho điều đó.

36. Xóa tất cả trừ Active 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

Nếu bạn muốn xóa tất cả các trang tính khác ngoài trang tính đang hoạt động, macro này rất hữu ích cho bạn. Khi bạn chạy macro này, nó sẽ so sánh tên của trang tính đang hoạt động với các trang tính khác rồi xóa chúng.

37. Bảo vệ tất cả các Worksheet ngay lập tức

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

Nếu bạn muốn bảo vệ tất cả các trang tính của mình trong một lần thì đây là mã dành cho bạn. Khi bạn chạy macro này, bạn sẽ nhận được một hộp nhập liệu để nhập mật khẩu. Khi bạn nhập mật khẩu của mình, hãy nhấp vào OK. Và đảm bảo quan tâm đến CAPS.

38. Thay đổi kích thước tất cả các biểu đồ trong một trang tính

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

Làm cho tất cả các biểu đồ có cùng kích thước. Mã macro này sẽ giúp bạn tạo tất cả các biểu đồ có cùng kích thước. Bạn có thể thay đổi chiều cao và chiều rộng của biểu đồ bằng cách thay đổi nó trong mã macro.

39. Chèn nhiều trang tính

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

Bạn có thể sử dụng mã này nếu muốn thêm nhiều trang tính vào sổ làm việc của mình trong một lần chụp. Khi bạn chạy mã macro này, bạn sẽ nhận được một hộp nhập liệu để nhập tổng số trang tính bạn muốn nhập.

40. Bảo vệ Worksheet

Sub ProtectWS()
ActiveSheet.Protect "mypassword", True, True
End Sub

Nếu bạn muốn bảo vệ trang tính của mình, bạn có thể sử dụng mã macro này. Tất cả những gì bạn phải làm chỉ là đề cập đến mật khẩu của mình trong mã.

41. Bỏ bảo vệ bảng tính

Sub UnprotectWS()
ActiveSheet.Unprotect "mypassword"
End Sub

Nếu bạn muốn bỏ bảo vệ trang tính của mình, bạn có thể sử dụng mã macro này. Tất cả những gì bạn phải làm chỉ là đề cập đến mật khẩu mà bạn đã sử dụng trong khi bảo vệ trang tính của mình.

42. Sắp xếp bảng tính

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) < UCase$(Sheets(j + 1).Name) Then Sheets(j).Move After:=Sheets(j + 1)
End If
End If
Next j
Next i
End Sub

Mã này sẽ giúp bạn sắp xếp các trang tính trong sổ làm việc của bạn theo tên của chúng.

43. Bảo vệ tất cả các ô bằng công thức

Sub lockCellsWithFormulas()
With ActiveSheet
.Unprotect
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
.Protect AllowDeletingRows:=True
End With
End Sub

Để bảo vệ ô có công thức chỉ bằng một cú nhấp chuột, bạn có thể sử dụng mã này.

44. Xóa tất cả các Worksheet trống

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

Chạy mã này và nó sẽ kiểm tra tất cả các trang tính trong sổ làm việc đang hoạt động và xóa nếu một trang tính trống.

45. Bỏ ẩn tất cả Hàng và Cột

Sub UnhideRowsColumns()
Columns.EntireColumn.Hidden = False
Rows.EntireRow.Hidden = False
End Sub

Thay vì hiện từng hàng và cột theo cách thủ công, bạn có thể sử dụng mã này để thực hiện việc này trong một lần.

46. ​​Lưu từng Worksheet dưới dạng PDF

Sub SaveWorkshetAsPDF()
Dimws As Worksheet
For Each ws In Worksheets
ws.ExportAsFixedFormat _
xlTypePDF, _
"ENTER-FOLDER-NAME-HERE" & _
ws.Name & ".pdf"
Next ws
End Sub

Mã này sẽ chỉ lưu tất cả các trang tính trong một tệp PDF riêng biệt. Bạn chỉ cần thay đổi tên thư mục từ mã.

47. Vô hiệu hóa ngắt trang

Sub DisablePageBreaks()
Dim wb As Workbook
Dim wks As Worksheet
Application.ScreenUpdating = False
For Each wb In Application.Workbooks
For Each Sht In wb.Worksheets
Sht.DisplayPageBreaks = False
Next Sht
Next wb
Application.ScreenUpdating = True
End Sub

Để tắt ngắt trang, hãy sử dụng mã này. Nó sẽ đơn giản vô hiệu hóa ngắt trang từ tất cả các sổ làm việc đang mở.

* Mã sổ làm việc

Các mã này sẽ giúp bạn thực hiện các tác vụ cấp sổ làm việc một cách dễ dàng và tốn ít công sức nhất.

48. Tạo một bản sao lưu của Workbook hiện tại

Sub FileBackUp()
ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & _
"" & Format(Date, "mm-dd-yy") & " " & _
ThisWorkbook.name
End Sub

Đây là một trong những macro hữu ích nhất có thể giúp bạn lưu tệp sao lưu của sổ làm việc hiện tại của mình.

Nó sẽ lưu một tệp sao lưu trong cùng thư mục nơi tệp hiện tại của bạn được lưu và nó cũng sẽ thêm ngày hiện tại vào tên của tệp.

49. Đóng tất cả Workbook cùng một lúc

Sub CloseAllWorkbooks()
Dim wbs As Workbook
For Each wbs In Workbooks
wbs.Close SaveChanges:=True
Next wb
End Sub

Sử dụng mã macro này để đóng tất cả các sổ làm việc đang mở. Mã macro này trước tiên sẽ kiểm tra từng sổ làm việc một và đóng chúng lại. Nếu bất kỳ trang tính nào chưa được lưu, bạn sẽ nhận được thông báo yêu cầu lưu trang tính đó.

50. Sao chép Worksheet đang hoạt động vào một Workbook mới

Sub CopyWorksheetToNewWorkbook()
ThisWorkbook.ActiveSheet.Copy _
Before:=Workbooks.Add.Worksheets(1)
End Sub

Giả sử nếu bạn muốn sao chép trang tính đang hoạt động của mình vào một sổ làm việc mới, chỉ cần chạy mã macro này và nó sẽ thực hiện tương tự cho bạn. Đó là một siêu tiết kiệm thời gian.

51. Active Workbook trong Email

Sub Send_Mail()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.to = "Sales@FrontLinePaper.com"
.Subject = "Growth Report"
.Body = "Hello Team, Please find attached Growth Report."
.Attachments.Add ActiveWorkbook.FullName
.display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub

Sử dụng mã macro này để nhanh chóng gửi sổ làm việc đang hoạt động của bạn trong một e-mail. Bạn có thể thay đổi chủ đề, email và nội dung trong mã và nếu bạn muốn gửi thư này trực tiếp, hãy sử dụng “.Send” thay vì “.Display”.

52. Thêm Sổ làm việc vào Tệp đính kèm Thư

Sub OpenWorkbookAsAttachment()
Application.Dialogs(xlDialogSendMail).Show
End Sub

Khi bạn chạy macro này, nó sẽ mở ứng dụng thư khách mặc định của bạn và đính kèm sổ làm việc đang hoạt động với nó dưới dạng tệp đính kèm.

53. Thông Điệp Chào Mừng

Sub auto_open()
MsgBox _
"Welcome To ExcelChamps & Thanks for downloading this file."
End Sub

Bạn có thể sử dụng auto_open để thực hiện tác vụ mở tệp và tất cả những gì bạn phải làm chỉ là đặt tên cho macro của mình là “auto_open”.

54. Thông Điệp Kết Thúc

Sub auto_close()
MsgBox "Bye Bye! Don't forget to check other cool stuff on
excelchamps.com"
End Sub

Bạn có thể sử dụng close_open để thực hiện tác vụ mở tệp và tất cả những gì bạn phải làm chỉ là đặt tên cho macro của mình là “close_open”.

55. Đếm Open Unsaved Workbooks

Sub VisibleWorkbooks()
Dim book As Workbook
Dim i As Integer
For Each book In Workbooks
If book.Saved = False Then
i = i + 1
End If
Next book
MsgBox i
End Sub

Giả sử bạn có 5-10 sổ làm việc đang mở, bạn có thể sử dụng mã này để lấy số lượng sổ làm việc chưa được lưu.

* Mã bảng Pivot

Các mã này sẽ giúp bạn quản lý và thực hiện một số thay đổi trong bảng tổng hợp trong nháy mắt.

56. Ẩn tổng phụ của Pivot Table

Sub HideSubtotals()
Dim pt As PivotTable
Dim pf As PivotField
On Error Resume Next
Set pt = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
If pt Is Nothing Then
MsgBox "You must place your cursor inside of a PivotTable."
Exit Sub
End If
For Each pf In pt.PivotFields
pf.Subtotals(1) = True
pf.Subtotals(1) = False
Next pf
End Sub

Nếu bạn muốn ẩn tất cả các tổng phụ, chỉ cần chạy mã này. Trước hết, hãy đảm bảo chọn một ô từ bảng tổng hợp của bạn rồi chạy macro này.

57. Làm mới tất cả các bảng Pivot

Sub vba_referesh_all_pivots()
Dim pt As PivotTable
For Each pt In ActiveWorkbook.PivotTables
pt.RefreshTable
Next pt
End Sub

Một phương pháp siêu nhanh để làm mới tất cả các bảng tổng hợp . Chỉ cần chạy mã này và tất cả các bảng tổng hợp trong sổ làm việc của bạn sẽ được làm mới trong một lần chụp.

59. Tự động cập nhật phạm vi Pivot Table

Sub UpdatePivotTableRange()
Dim Data_Sheet As Worksheet
Dim Pivot_Sheet As Worksheet
Dim StartPoint As Range
Dim DataRange As Range
Dim PivotName As String
Dim NewRange As String
Dim LastCol As Long
Dim lastRow As Long
'Set Pivot Table & Source Worksheet
Set Data_Sheet = ThisWorkbook.Worksheets("PivotTableData3")
Set Pivot_Sheet = ThisWorkbook.Worksheets("Pivot3")
'Enter in Pivot Table Name
PivotName = "PivotTable2"
'Defining Staring Point & Dynamic Range
Data_Sheet.Activate
Set StartPoint = Data_Sheet.Range("A1")
LastCol = StartPoint.End(xlToRight).Column
DownCell = StartPoint.End(xlDown).Row
Set DataRange = Data_Sheet.Range(StartPoint, Cells(DownCell, LastCol))
NewRange = Data_Sheet.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)
'Change Pivot Table Data Source Range Address
Pivot_Sheet.PivotTables(PivotName). _
ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=NewRange)
'Ensure Pivot Table is Refreshed
Pivot_Sheet.PivotTables(PivotName).RefreshTable
'Complete Message
Pivot_Sheet.Activate
MsgBox "Your Pivot Table is now updated."
End Sub

Nếu bạn không sử dụng bảng Excel thì bạn có thể sử dụng mã này để cập nhật phạm vi bảng tổng hợp .

60. Tắt/Bật Lấy dữ liệu Pivot

Sub activateGetPivotData()
Application.GenerateGetPivotData = True
End Sub
Sub deactivateGetPivotData()
Application.GenerateGetPivotData = False
End Sub

Để tắt/bật chức năng GetPivotData, bạn cần sử dụng tùy chọn Excel. Nhưng với mã này, bạn có thể làm điều đó chỉ bằng một cú nhấp chuột.

* Mã biểu đồ

Sử dụng các mã VBA này để quản lý biểu đồ trong Excel và tiết kiệm nhiều thời gian của bạn.

61. Thay đổi loại biểu đồ

Sub ChangeChartType()
ActiveChart.ChartType = xlColumnClustered
End Sub

Mã này sẽ giúp bạn chuyển đổi loại biểu đồ mà không cần sử dụng các tùy chọn biểu đồ từ tab. Tất cả những gì bạn phải làm chỉ là chỉ định loại bạn muốn chuyển đổi.

Mã bên dưới sẽ chuyển đổi biểu đồ đã chọn thành biểu đồ cột được nhóm. Có các mã khác nhau cho các loại khác nhau, bạn có thể tìm thấy tất cả các loại đó từ đây .

62. Dán Biểu đồ dưới dạng Hình ảnh

Sub ConvertChartToPicture()
ActiveChart.ChartArea.Copy
ActiveSheet.Range("A1").Select
ActiveSheet.Pictures.Paste.Select
End Sub

Mã này sẽ giúp bạn chuyển đổi biểu đồ thành hình ảnh. Bạn chỉ cần chọn biểu đồ của mình và chạy mã này.

63. Thêm tiêu đề biểu đồ

Sub AddChartTitle()
Dim i As Variant
i = InputBox("Please enter your chart title", "Chart Title")
On Error GoTo Last
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = i
Last:
Exit Sub
End Sub

Trước hết, bạn cần chọn biểu đồ của mình và chạy mã này. Bạn sẽ nhận được một hộp đầu vào để nhập tiêu đề biểu đồ.

* Mã nâng cao

Một số mã mà bạn có thể sử dụng để tạo trước tác vụ nâng cao trong bảng tính của mình.

64. Lưu phạm vi đã chọn dưới dạng PDF

Sub HideSubtotals()
Dim pt As PivotTable
Dim pf As PivotField
On Error Resume Next
Set pt = ActiveSheet.PivotTables(ActiveCell.PivotTable.name)
If pt Is Nothing Then
MsgBox "You must place your cursor inside of a PivotTable."
Exit Sub
End If
For Each pf In pt.PivotFields
pf.Subtotals(1) = True
pf.Subtotals(1) = False
Next pf
End Sub

Nếu bạn muốn ẩn tất cả các tổng phụ, chỉ cần chạy mã này. Trước hết, hãy đảm bảo chọn một ô từ bảng tổng hợp của bạn rồi chạy macro này.

65. Tạo Mục lục

Sub TableofContent()
Dim i As Long
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Table of Content").Delete
Application.DisplayAlerts = True
On Error GoTo 0
ThisWorkbook.Sheets.Add Before:=ThisWorkbook.Worksheets(1)
ActiveSheet.Name = "Table of Content"
For i = 1 To Sheets.Count
With ActiveSheet
.Hyperlinks.Add _
Anchor:=ActiveSheet.Cells(i, 1), _
Address:="", _
SubAddress:="'" & Sheets(i).Name & "'!A1", _
ScreenTip:=Sheets(i).Name, _
TextToDisplay:=Sheets(i).Name
End With
Next i
End Sub

Giả sử bạn có hơn 100 trang tính trong sổ làm việc của mình và thật khó để điều hướng ngay bây giờ.

Đừng lo mã macro này sẽ giải cứu mọi thứ. Khi bạn chạy mã này, nó sẽ tạo một trang tính mới và tạo chỉ mục các trang tính có siêu liên kết đến chúng.

66. Chuyển đổi Phạm vi thành Hình ảnh

Sub PasteAsPicture()
Application.CutCopyMode = False
Selection.Copy
ActiveSheet.Pictures.Paste.Select
End Sub

Dán phạm vi đã chọn dưới dạng hình ảnh. Bạn chỉ cần chọn phạm vi và khi bạn chạy mã này, nó sẽ tự động chèn ảnh cho phạm vi đó .

67. Chèn một hình ảnh được liên kết

Sub LinkedPicture()
Selection.Copy
ActiveSheet.Pictures.Paste(Link:=True).Select
End Sub

Mã VBA này sẽ chuyển đổi phạm vi đã chọn của bạn thành một ảnh được liên kết và bạn có thể sử dụng ảnh đó ở bất cứ đâu bạn muốn.

68. Sử dụng Text to Speech

Sub Speak()
Selection.Speak
End Sub

Chỉ cần chọn một phạm vi và chạy mã này. Excel sẽ đọc tất cả văn bản mà bạn có trong phạm vi đó, từng ô một.

69. Kích hoạt Form nhập liệu

Sub DataForm()
ActiveSheet.ShowDataForm
End Sub

Có một biểu mẫu nhập dữ liệu mặc định  mà bạn có thể sử dụng để nhập dữ liệu.

70. Sử dụng Mục tiêu Tìm kiếm

Sub GoalSeekVBA()
Dim Target As Long
On Error GoTo Errorhandler
Target = InputBox("Enter the required value", "Enter Value")
Worksheets("Goal_Seek").Activate
With ActiveSheet.Range("C7")
.GoalSeek_ Goal:=Target, _
ChangingCell:=Range("C2")
End With
Exit Sub
Errorhandler: MsgBox ("Sorry, value is not valid.")
End Sub

Goal Seek có thể cực kỳ hữu ích để bạn giải quyết các vấn đề phức tạp. Tìm hiểu thêm về mục tiêu tìm kiếm từ đây trước khi bạn sử dụng mã này.

71. Mã VBA để tìm kiếm trên Google

Sub SearchWindow32()
Dim chromePath As String
Dim search_string As String
Dim query As String
query = InputBox("Enter here your search here", "Google Search")
search_string = query
search_string = Replace(search_string, " ", "+")
'Uncomment the following line for Windows 64 versions and comment out Windows 32 versions'
'chromePath = "C:Program FilesGoogleChromeApplicationchrome.exe"
'Uncomment the following line for Windows 32 versions and comment out Windows 64 versions
'chromePath = "C:Program Files (x86)GoogleChromeApplicationchrome.exe"
Shell (chromePath & " -url http://google.com/#q=" & search_string)
End Sub

Mã công thức

Các mã này sẽ giúp bạn tính toán hoặc nhận kết quả mà bạn thường làm với các hàm và công thức của trang tính.

72. Chuyển tất cả Công thức thành Giá trị

Sub convertToValues()
Dim MyRange As Range
Dim MyCell As Range
Select Case _
MsgBox("You Can't Undo This Action. " _
& "Save Workbook First?", vbYesNoCancel, _
"Alert")
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
Set MyRange = Selection
For Each MyCell In MyRange
If MyCell.HasFormula Then
MyCell.Formula = MyCell.Value
End If
Next MyCell
End Sub

Đơn giản chỉ cần chuyển đổi công thức thành giá trị. Khi bạn chạy macro này, nó sẽ nhanh chóng thay đổi các công thức thành giá trị tuyệt đối .

73. Xóa khoảng trắng khỏi các ô đã chọn

Sub RemoveSpaces()
Dim myRange As Range
Dim myCell As Range
Select Case MsgBox("You Can't Undo This Action. " _
& "Save Workbook First?", _
vbYesNoCancel, "Alert")
Case Is = vbYesThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
Set myRange = Selection
For Each myCell In myRange
If Not IsEmpty(myCell) Then
myCell = Trim(myCell)
End If
Next myCell
End Sub

Một trong những macro hữu ích nhất từ ​​​​danh sách này. Nó sẽ kiểm tra lựa chọn của bạn và sau đó xóa tất cả các khoảng trắng thừa khỏi đó.

74. Xóa ký tự khỏi chuỗi

Public Function removeFirstC(rng As String, cnt As Long)
removeFirstC = Right(rng, Len(rng) - cnt)
End Function

Chỉ cần xóa các ký tự ở đầu chuỗi văn bản. Tất cả những gì bạn cần là tham chiếu đến một ô hoặc chèn một văn bản vào hàm và số lượng ký tự cần xóa khỏi chuỗi văn bản.

Nó có hai đối số “rng” cho chuỗi văn bản và “cnt” cho số lượng ký tự cần xóa. Ví dụ: Nếu bạn muốn xóa các ký tự đầu tiên khỏi một ô , bạn cần nhập 1 vào cnt.

75. Thêm biểu tượng độ chèn trong Excel

Sub degreeSymbol( )
Dim rng As Range
For Each rng In Selection
rng.Select
If ActiveCell <> "" Then
If IsNumeric(ActiveCell.Value) Then
ActiveCell.Value = ActiveCell.Value & "°"
End If
End If
Next
End Sub

Giả sử bạn có một danh sách các số trong một cột và bạn muốn thêm ký hiệu độ cho tất cả chúng.

76. Văn bản đảo ngược

Public Function rvrse(ByVal cell As Range) As String
rvrse = VBA.strReverse(cell.Value)
End Function

Tất cả những gì bạn phải làm chỉ là nhập hàm “rvrse” vào một ô và tham chiếu đến ô mà bạn có văn bản muốn đảo ngược.

77. Kích hoạt kiểu tham chiếu R1C1

Sub ActivateR1C1()
If Application.ReferenceStyle = xlA1 Then
Application.ReferenceStyle = xlR1C1
Else
Application.ReferenceStyle = xlR1C1
End If
End Sub

Mã macro này sẽ giúp bạn kích hoạt kiểu tham chiếu R1C1 mà không cần sử dụng các tùy chọn Excel.

78. Kích hoạt kiểu tham chiếu A1

Sub ActivateA1()
If Application.ReferenceStyle = xlR1C1 Then
Application.ReferenceStyle = xlA1
Else
Application.ReferenceStyle = xlA1
End If
End Sub

Mã macro này sẽ giúp bạn kích hoạt kiểu tham chiếu A1 mà không cần sử dụng các tùy chọn Excel.

79. Chèn phạm vi thời gian

Sub TimeStamp()
Dim i As Integer
For i = 1 To 24
ActiveCell.FormulaR1C1 = i & ":00"
ActiveCell.NumberFormat = "[$-409]h:mm AM/PM;@"
ActiveCell.Offset(RowOffset:=1, ColumnOffset:=0).Select
Next i
End Sub

Với mã này, bạn có thể chèn một khoảng thời gian theo trình tự từ 00:00 đến 23:00.

80. Chuyển đổi ngày thành ngày

Sub date2day()
Dim tempCell As Range
Selection.Value = Selection.Value
For Each tempCell In Selection
If IsDate(tempCell) = True Then
With tempCell
.Value = Day(tempCell)
.NumberFormat = "0"
End With
End If
Next tempCell
End Sub

Nếu bạn có ngày trong trang tính của mình và bạn muốn chuyển đổi tất cả những ngày đó thành ngày thì mã này là dành cho bạn. Chỉ cần chọn phạm vi ô và chạy macro này.

81. Chuyển đổi Ngày thành Năm

Sub date2year()
Dim tempCell As Range
Selection.Value = Selection.Value
For Each tempCell In Selection
If IsDate(tempCell) = True Then
With tempCell
.Value = Year(tempCell)
.NumberFormat = "0"
End With
End If
Next tempCell
End Sub

Mã này sẽ chuyển đổi ngày thành năm.

82. Xóa thời gian khỏi ngày

Sub removeTime()
Dim Rng As Range
For Each Rng In Selection
If IsDate(Rng) = True Then
Rng.Value = VBA.Int(Rng.Value)
End If
Next
Selection.NumberFormat = "dd-mmm-yy"
End Sub

Nếu bạn có thời gian với ngày và bạn muốn xóa nó thì bạn có thể sử dụng mã này.

83. Xóa ngày khỏi ngày và giờ

Sub removeDate()
Dim Rng As Range
For Each Rng In Selection
If IsDate(Rng) = True Then
Rng.Value = Rng.Value - VBA.Fix(Rng.Value)
End If
NextSelection.NumberFormat = "hh:mm:ss am/pm"
End Sub

Nó sẽ chỉ trả về thời gian từ một giá trị ngày và giờ.

84. Chuyển đổi sang chữ hoa

Sub convertUpperCase()
Dim Rng As Range
For Each Rng In Selection
If Application.WorksheetFunction.IsText(Rng) Then
Rng.Value = UCase(Rng)
End If
Next
End Sub

Chọn các ô và chạy mã này. Nó sẽ kiểm tra từng ô của phạm vi đã chọn và sau đó chuyển đổi nó thành văn bản chữ hoa.

85. Chuyển đổi sang chữ thường

Sub convertLowerCase()
Dim Rng As Range
For Each Rng In Selection
If Application.WorksheetFunction.IsText(Rng) Then
Rng.Value= LCase(Rng)
End If
Next
End Sub

Mã này sẽ giúp bạn chuyển đổi văn bản đã chọn thành văn bản chữ thường. Chỉ cần chọn một dải ô mà bạn có văn bản và chạy mã này. Nếu một ô có một số hoặc bất kỳ giá trị nào khác với văn bản thì giá trị đó sẽ giữ nguyên.

86. Chuyển sang trường hợp thích hợp

Sub convertProperCase()
Dim Rng As Range
For Each Rng In Selection
If WorksheetFunction.IsText(Rng) Then
Rng.Value = WorksheetFunction.Proper(Rng.Value)
End If
Next
End Sub

Và mã này sẽ chuyển đổi văn bản đã chọn thành trường hợp thích hợp khi bạn viết hoa chữ cái đầu tiên và viết hoa phần còn lại.

87. Chuyển đổi sang Câu Trường hợp

Sub convertTextCase()
Dim Rng As Range
For Each Rng In Selection
If WorksheetFunction.IsText(Rng) Then
Rng.Value = UCase(Left(Rng, 1)) & LCase(Right(Rng, Len(Rng) - 1))
End If
Next Rng
End Sub

Trong trường hợp văn bản, bạn có chữ cái đầu tiên của từ đầu tiên được viết hoa và tất cả các từ còn lại được viết nhỏ cho một câu và mã này sẽ giúp bạn chuyển đổi văn bản bình thường thành trường hợp câu .

88. Xóa một ký tự khỏi lựa chọn

Sub removeChar()
Dim Rng As Range
Dim rc As String
rc = InputBox("Character(s) to Replace", "Enter Value")
For Each Rng In Selection
Selection.Replace What:=rc, Replacement:=""
Next
End Sub

Để xóa một ký tự cụ thể khỏi ô đã chọn, bạn có thể sử dụng mã này. Nó sẽ hiển thị cho bạn một hộp nhập để nhập ký tự bạn muốn xóa.

89. Đếm từ trong toàn bộ bảng tính

Sub Word_Count_Worksheet()
Dim WordCnt As Long
Dim rng As Range
Dim S As String
Dim N As Long
For Each rng In ActiveSheet.UsedRange.Cells
S = Application.WorksheetFunction.Trim(rng.Text)
N = 0
If S <> vbNullString Then
N = Len(S) - Len(Replace(S, " ", "")) + 1
End If
WordCnt = WordCnt + N
Next rng
MsgBox "There are total " _
& Format(WordCnt, "#,##0") & _
" words in the active worksheet"
End Sub

Nó có thể giúp bạn đếm tất cả các từ trong một bảng tính.

90. Xóa dấu nháy đơn khỏi một số

Sub removeApostrophes()
Selection.Value = Selection.Value
End Sub

Nếu bạn có dữ liệu số mà bạn có dấu nháy đơn trước mỗi số, bạn hãy chạy mã này để xóa dữ liệu đó.

91. Xóa số thập phân khỏi số

Sub removeDecimals()
Dim lnumber As Double
Dim lResult As Long
Dim rng As Range
For Each rng In Selection
rng.Value = Int(rng)
rng.NumberFormat = "0"
Next rng
End Sub

Mã này sẽ đơn giản giúp bạn xóa tất cả các số thập phân khỏi các số trong phạm vi đã chọn.

92. Nhân tất cả các giá trị với một số

Sub addNumber()
Dim rng As Range
Dim i As Integer
i = InputBox("Enter number to multiple", "Input Required")
For Each rng In Selection
If WorksheetFunction.IsNumber(rng) Then
rng.Value = rng + i
Else
End If
Next rng
End Sub

Giả sử bạn có một danh sách các số và bạn muốn nhân tất cả các số với một số cụ thể. Để sử dụng mã này : Chọn phạm vi ô đó và chạy mã này. Trước tiên, nó sẽ hỏi bạn số mà bạn muốn nhân với số nào và sau đó nhân ngay lập tức tất cả các số với số đó.

93. Thêm một số trong tất cả các số

Sub addNumber()
Dim rng As Range
Dim i As Integer
i = InputBox("Enter number to multiple", "Input Required")
For Each rng In Selection
If WorksheetFunction.IsNumber(rng) Then
rng.Value = rng + i
Else
End If
Next rng
End Sub

Giống như phép nhân, bạn cũng có thể thêm một số vào một tập hợp số.

94. Tính Căn bậc hai

Sub getSquareRoot()
Dim rng As Range
Dim i As Integer
For Each rng In Selection
If WorksheetFunction.IsNumber(rng) Then
rng.Value = Sqr(rng)
Else
End If
Next rng
End Sub

Để tính căn bậc hai mà không cần áp dụng công thức, bạn có thể sử dụng mã này. Nó sẽ chỉ kiểm tra tất cả các ô đã chọn và chuyển đổi các số thành căn bậc hai của chúng.

95. Tính Căn bậc ba

Sub getCubeRoot()
Dim rng As Range
Dimi As Integer
For Each rng In Selection
If WorksheetFunction.IsNumber(rng) Then
rng.Value = rng ^ (1 / 3)
Else
End If
Nextrng
End Sub

Để tính căn bậc ba mà không cần áp dụng công thức, bạn có thể sử dụng mã này. Nó sẽ chỉ kiểm tra tất cả các ô đã chọn và chuyển đổi các số thành căn bậc ba của chúng.

96. Thêm các bảng chữ cái AZ trong một dãy

Sub addsAlphabets1()
Dim i As Integer
For i = 65 To 90
ActiveCell.Value = Chr(i)
ActiveCell.Offset(1, 0).Select
Next i
End Sub
Sub addsAlphabets2()
Dim i As Integer
For i = 97 To 122
ActiveCell.Value = Chr(i)
ActiveCell.Offset(1, 0).Select
Next i
End Sub

Giống như số sê-ri, bạn cũng có thể chèn bảng chữ cái vào trang tính của mình. Dưới đây là mã mà bạn có thể sử dụng.

97. Chuyển đổi số La Mã thành số Ả Rập

Sub convertToNumbers()
Dim rng As Range
Selection.Value = Selection.Value
For Each rng In Selection
If Not WorksheetFunction.IsNonText(rng) Then
rng.Value = WorksheetFunction.Arabic(rng)
End If
Next rng
End Sub

Đôi khi thật khó để hiểu số La Mã là số sê-ri. Mã này sẽ giúp bạn chuyển đổi số La Mã sang số Ả Rập.

98. Loại bỏ các dấu hiệu tiêu cực

Sub removeNegativeSign()
Dim rng As Range
Selection.Value = Selection.Value
For Each rng In Selection
If WorksheetFunction.IsNumber(rng) Then
rng.Value = Abs(rng)
End If
Next rng

Mã này sẽ chỉ kiểm tra tất cả các ô trong vùng chọn và chuyển đổi tất cả các số âm thành số dương. Chỉ cần chọn một phạm vi và chạy mã này.

99. Thay thế các ô trống bằng số 0

Sub replaceBlankWithZero()
Dim rng As Range
Selection.Value = Selection.Value
For Each rng In Selection
If rng = "" Or rng = " " Then
rng.Value = "0"
Else
End If
Next rng
End Sub

Đối với dữ liệu mà bạn có ô trống, bạn có thể sử dụng mã bên dưới để thêm số 0 vào tất cả các ô đó. Việc sử dụng các ô đó trong các tính toán tiếp theo sẽ dễ dàng hơn.

thêm mã

 

One thought on “Mã macro Excel [VBA] hữu ích hàng đầu

Đánh Giá

Email của bạn sẽ không được hiển thị công khai.

1527 👁2