Trần Văn Huệ
Trần Văn Huệ
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 2662 lượt xem

Cách chạy mã macro dựa trên giá trị ô, phạm vi ô hoặc ô thay đổi trong Excel

Sep 28 2020

Chạy mã macro ngay khi giá trị ô thay đổi trong Excel 

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


Cách chạy mã macro dựa trên giá trị ô, phạm vi ô hoặc ô thay đổi trong Excel

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)

Chạy mã macro khi giá trị ô trong một phạm vi thay đổi

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

Cách chạy mã macro dựa trên giá trị ô, phạm vi ô hoặc ô thay đổi trong Excel

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

Chạy mã macro tự động dựa trên giá trị ô 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.

Chạy mã macro nếu giá trị ô lớn hơn hoặc nhỏ hơn một giá trị cụ thể 

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


Cách chạy mã macro dựa trên giá trị ô, phạm vi ô hoặc ô thay đổi trong Excel

Lưu ý : Trong đoạn mã trên:

  • A1 là ô chứa giá trị cụ thể mà bạn muốn chạy macro dựa trên.
  • Case 10 To 50: Macro1: Có nghĩa là nếu giá trị từ 10 đến 50, hãy chạy Macro1;
  • Case Is > 50: Macro2: Có nghĩa là nếu giá trị lớn hơn 50, hãy chạy Macro2.

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.

Xem thêm: Hướng dẫn cách dùng các toán tử logic AND, OR, NOT trong VBA

Chạy mã macro nếu giá trị ô bằng văn bản cụ thể 

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
Xem thêm: Học lập trình VBA tại Hà Nội

Cách chạy mã macro dựa trên giá trị ô, phạm vi ô hoặc ô thay đổi trong Excel

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!

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. Chẳng ai khác ngoài bạn hiểu mình cần trang bị thêm kiến thức gì. Hãy tìm hiểu ngay TẠI ĐÂY những khóa học 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.

Cùng tham gia cộng đồng hỏi đáp về chủ đề Tin học văn phòng

Thảo luận 0 câu trả lời
Lượt xem 2662 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội