Thông thường, trong Excel chúng ta có thể nhấn phím F5 hoặc nút Run để thực thi mã VBA. Tuy nhiên, bạn đã bao giờ thử chạy mã macro cụ thể khi giá trị ô thay đổi chưa? Ở phần này, Gitiho sẽ giới thiệu một số thủ thuật để nhanh chóng giải quyết công việc này trong Excel.
Để chạy một mã macro bất kỳ mỗi khi thay đổi giá trị ô trong Excel, đoạn mã VBA sau có thể giúp bạn, cách thực hiện như sau:
Bước 1: Mở tệp Excel cần chạy mã macro khi một giá trị ô cụ thể thay đổi.
Bước 2: Kích chuột phải vào tên của sheets mà bạn muốn thực thi macro.
Bước 3: Trong menu hiển thị chọn tùy chọn View Code.
Bước 4: Trong cửa sổ Microsoft Visual Basic for applications đã mở, sao chép và dán mã dưới đây vào modul trống ở bên phải.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Call Mymacro
End If
End Sub
Lưu ý: Trong đoạn mã trên, A1 là ô cụ thể mà bạn muốn khi thay đổi giá trị trong ô này thì mã macro sẽ chạy. Mymacro là tên macro mà bạn muốn chạy, nhưng tùy theo nhu cầu bạn có thể thay đổi bằng tên khác.
Bước 5: Lưu và đóng cửa sổ mã, bây giờ khi bạn nhập hoặc thay đổi giá trị trong ô A1, mã cụ thể sẽ được kích hoạt cùng một lúc.
Xem thêm: Hướng dẫn cách tùy biến comment trong Excel bằng VBA (Phần 1)
Nếu bạn muốn chạy hoặc kích hoạt mã macro khi bất kỳ giá trị ô nào thay đổi trong một phạm vi ô, đoạn mã sau có thể giúp bạn.
Bước 1: Mở tệp Excel cần chạy mã macro khi một giá trị ô cụ thể thay đổi.
Bước 2: Kích chuột phải vào tên của sheets mà bạn muốn thực thi macro.
Bước 3: Trong menu hiển thị chọn tùy chọn View Code.
Bước 4: Trong cửa sổ Microsoft Visual Basic for Applications đã mở, sao chép và dán mã dưới đây vào modul trống ở bên phải.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub
Lưu ý: Trong đoạn mã trên, A1:B100 là phạm vi các ô cụ thể mà bạn muốn chạy mã. Mymacro là tên macro mà bạn muốn chạy.
Bước 5: Lưu và đóng cửa sổ mã, bây giờ khi bạn nhập hoặc thay đổi giá trị trong bất kỳ ô nào của A1:B100, mã cụ thể sẽ được thực thi ngay lập tức.
Xem thêm: Hướng dẫn tạo drop-down list có giá trị phụ thuộc vào một list khác trong Excel
Nếu như ở phần trên Gitiho đã hướng dẫn các bạn cách chạy mã macro khi giá trị trong một ô hoặc phạm vi ô của tệp Excel thay đổi. Thì phần này sẽ là hướng dẫn để chạy mã macro tự động dựa trên giá trị ô trong Excel.
Ví dụ nếu bạn có nhiều mã macro trong file Excel và giờ muốn chạy những mã này dựa trên giá trị ô. Bài viết này sẽ hướng dẫn bạn về một số tình huống có thể gặp trong công việc hàng ngày khi sử dụng Excel.
Ví dụ: Nếu giá trị trong ô A1 nằm giữa 10 và 50, hãy chạy macro1 và nếu giá trị lớn hơn 50, hãy chạy macro2. Để giải quyết việc này trong Excel, bạn có thể sử dụng mã VBA sau.
Bước 1: Mở tệp Excel cần tạo mã VBA để thực hiện nhiệm vụ.
Bước 2: Sau đó kích chuột phải vào tên sheets mà bạn muốn thực thi macro dựa trên giá trị ô, sau đó chọn View Code.
Bước 3: Trong cửa sổ Microsoft Visual Basic for applications đã mở, sao chép và dán mã dưới đây vào modul trống ở bên phải.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
Select Case Target.Value
Case 10 To 50: Macro1
Case Is > 50: Macro2
End Select
End If
End Sub
Lưu ý : Trong đoạn mã trên:
Lưu ý: Nhưng tùy vào nhu cầu sử dụng mà bạn có thể thay đổi tên và tiêu chí macro theo nhu cầu và bạn cũng có thể thêm các tiêu chí khác sau.
Bước 4: Lưu và đóng cửa sổ mã VBA, bây giờ khi giá trị bạn nhập từ 10 đến 50 trong ô A1, Macro1 sẽ được kích hoạt, nếu giá trị nhập lớn hơn 50, Macro2 sẽ được thực thi.
Có thể nói, thời đại công nghệ 4.0 đang dần đi vào cuộc sống đòi hỏi mọi người phải tự trang bị kiến thức tin học cho phù hợp để có thể bắt kịp nhưng thay đổi nhanh chóng này. Xem ngay những khóa học VBA hấp dẫn, có tính thực tế cao của Gitiho và đăng ký nhận tư vấn ngay hôm nay:
Ví dụ: Nếu bạn muốn kích hoạt macro dựa trên văn bản cụ thể trong một ô, để chạy macro1 nếu nhập văn bản “Delete” và chạy macro2 nếu nhập văn bản “Insert”. Đoạn mã sau đây có thể giúp bạn.
Bước 1: Mở tệp Excel cần tạo mã VBA để thực hiện nhiệm vụ.
Bước 2: Sau đó kích chuột phải vào tên sheets mà bạn muốn thực thi macro dựa trên giá trị ô rồi chọn View Code.
Bước 3: Trong cửa sổ Microsoft Visual Basic for applications đã mở, sao chép và dán mã dưới đây vào modul trống ở bên phải.
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub
Lưu ý: Trong đoạn mã trên, “Delete” và “Insert” là văn bản ô mà bạn muốn chạy macro dựa trên và Macro1 và Macro2
Bước 4: Lưu và đóng cửa sổ mã VBA, bây giờ, khi bạn nhập văn bản "Delete" vào ô A1, macro1 sẽ được kích hoạt, nếu nhập văn bản "Insert", macro2 sẽ được thực thi.
Trên đây Gitiho vừa hướng dẫn các bạn các mã VBA đơn giản để chạy mã macro dựa trên giá trị ô, phạm vi ô hoặc ô thay đổi trong Excel. Nếu các bạn biết thêm các đoạn mã VBA thú vị khác để thực hiện các tính năng tương tự như trên, hãy chia sẻ cùng chúng tôi thông qua comment ở phía dưới nhé. Chúc các bạn thành công!
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!