Note: The other languages of the website are Google-translated. Back to English

 Làm thế nào để chạy macro dựa trên giá trị ô trong Excel?

Giả sử, tôi có nhiều mã macro trong sổ làm việc của mình và bây giờ, tôi muốn chạy các mã này dựa trên giá trị ô. Bài viết này, tôi sẽ nói về một số tình huống bạn có thể gặp phải trong công việc hàng ngày khi sử dụng Excel.

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

Chạy hoặc kích hoạt macro nếu giá trị ô bằng văn bản cụ thể với mã VBA


mũi tên màu xanh bong bóng bên phải Chạy hoặc kích hoạt macro nếu giá trị ô lớn hơn hoặc nhỏ hơn một giá trị cụ thể với mã VBA

Ví dụ: nếu giá trị trong ô A1 nằm trong khoảng từ 10 đến 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 công việc này trong Excel, vui lòng áp dụng mã VBA sau.

1. Bấm chuột phải vào tab trang tính mà bạn muốn thực thi macro dựa trên giá trị ô, sau đó chọn Mã Chế độ xem từ menu ngữ cảnh và trong Microsoft Visual Basic cho các ứng dụng cửa sổ, sao chép và dán mã sau vào Mô-đun trống:

Mã VBA: Chạy macro nếu giá trị ô lớn hơn hoặc nhỏ hơn:

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

doc chạy macro dựa trên giá trị ô 1

Chú thích: 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;

Trường hợp 10 đến 50: Macro1: nghĩa là nếu giá trị nằm trong khoảng từ 10 đến 50, hãy chạy Macro1;

Trường hợp> 50: Macro2: nghĩa là nếu giá trị lớn hơn 50, hãy chạy Macro2.

Vui lòng thay đổi tên và tiêu chí macro của chủ đề này theo nhu cầu của bạn và bạn cũng có thể thêm các tiêu chí khác sau Khay kịch bản.

2. Sau đó lưu và đóng cửa sổ mã này, 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.


mũi tên màu xanh bong bóng bên phải Chạy hoặc kích hoạt macro nếu giá trị ô bằng văn bản cụ thể với mã VBA

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 “Xóa” và chạy macro2 nếu nhập văn bản “Chèn”. Đoạn mã sau có thể giúp bạn một việc.

1. Bấm chuột phải vào trang tính mà bạn muốn thực thi macro dựa trên giá trị ô, sau đó chọn Mã Chế độ xem từ menu ngữ cảnh và trong Microsoft Visual Basic cho các ứng dụng cửa sổ, sao chép và dán mã sau vào Mô-đun trống:

Mã VBA: Chạy macro nếu giá trị ô là một văn bản cụ thể

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 

doc chạy macro dựa trên giá trị ô 2

Chú thích: Trong đoạn mã trên, “Xóa bỏ"Và"Chèn”Là các văn bản ô mà bạn muốn chạy macro dựa trên và vĩ mô1 vĩ mô2 là các macro bạn muốn thực thi dựa trên văn bản. Vui lòng thay đổi chúng theo nhu cầu của bạn.

2. Sau đó lưu mã này và đóng cửa sổ, bây giờ, khi bạn nhập văn bản “Xóa” vào ô A1, macro1 sẽ được kích hoạt, nếu nhập văn bản “Chèn”, macro2 sẽ được thực thi.


Các bài liên quan:

Làm thế nào để chạy macro khi giá trị ô thay đổi trong Excel?

Làm cách nào để chạy macro tự động trước khi in trong Excel?

Làm cách nào để chạy macro dựa trên giá trị được chọn từ danh sách thả xuống trong Excel?

Làm thế nào để chạy macro bằng cách nhấp vào siêu liên kết trong Excel?

Làm cách nào để chạy macro khi trang tính được chọn từ sổ làm việc?


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (19)
Xếp hạng 5 trong 5 · xếp hạng 1
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, nếu bạn muốn chạy macro dựa trên hai ô thì sao? Một ô là văn bản và ô còn lại có các giá trị số? Sau đó, bạn sẽ muốn gọi macro nếu hai ô hiển thị chính xác những gì bạn muốn, chẳng hạn như "CÓ" cho ô đầu tiên và 1 cho ô thứ hai, nếu không một hộp bật lên sẽ hiển thị thông báo "Không tìm thấy".
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Yêu cầu:
Dựa trên sự lựa chọn
Sẽ có một danh sách thả xuống để theo dõi ba thuộc tính có cùng thứ nguyên như bên dưới.
Và sẽ có ba ô có nguồn gốc sẽ được lấy từ các ô (G46, G47 và G48)

kịch bản:
Nếu tôi chọn một giá trị từ danh sách thả xuống trung tâm chi phí, ô dẫn xuất trung tâm chi phí (K46) sẽ được điền với giá trị được chọn từ danh sách thả xuống trung tâm chi phí (H46) và hai ô dẫn xuất khác (K47 và k48) sẽ trở thành trống.

Tương tự nếu tôi chọn giá trị từ danh sách thả xuống Trình quản lý ngân sách, ô dẫn xuất của Trình quản lý ngân sách sẽ được điền với giá trị được chọn từ danh sách thả xuống Trình quản lý ngân sách (H47) và hai ô dẫn xuất khác (K45 và k48) sẽ trở thành trống.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đang làm việc với phân tích kết quả. Trong trường hợp này, dữ liệu trong excel sẽ giống như Name, Sub name, Crade. Bây giờ, tôi muốn tìm tất cả các số ứng cử viên đạt hoặc thành công từ kết quả. Làm thế nào tôi có thể nhận được nó. Bởi vì, tôi đang có 6 chủ đề khác nhau và kết quả của chúng trong một trang tính excel duy nhất. Nếu học sinh thất bại trong một môn học thì học sinh đó không phải là học sinh thành công. Làm thế nào để xóa tên của họ trong tất cả các môn học.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vui lòng sửa cả hai mã cho cùng một trang tính.
MÃ ĐẦU TIÊN LÀM VIỆC HOÀN HẢO
Private Sub Worksheet_Change (ByVal Target As Range)
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D1")) thì Không có gì
Chọn phạm vi trường hợp ("D1")
Trường hợp "0.5": Một nửa
Trường hợp "1": Một
Trường hợp "1.25": OneTwentyFive
Kết thúc Chọn
Cuối Nếu
End Sub

MÃ THỨ HAI KHÔNG HOẠT ĐỘNG (làm ơn sửa lại phần bên dưới)
Thay đổi phụ riêng tư (Theo phạm vi mục tiêu ByVal)
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D2")) thì Không có gì
Chọn phạm vi trường hợp ("D2")
Trường hợp "9.53": chín điểm
Kết thúc Chọn
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Olá, quero fazer o seguinte:
Na Celula A1, assim que ela estiver preenchida Pass para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para cadastrar produtos, e ele lê os numros automaticos, ai tenho que ficar apertando ENTER para ir para celula de baixo.

Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hola, una Consulta, como se haría si por ejemplo dado un numro se pueda ejecutar las dos macros
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Gustavo
Để giải quyết vấn đề của bạn, vui lòng áp dụng mã sau:
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
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

Hãy cố gắng, hy vọng nó có thể giúp bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bonjour,
je souhaiterais đính cette macro à mon code. Le problème est que la cellule s'incrémente via une toupie et le code ne renais pas le changement de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne Correction.

Merci
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Gilles,
Bạn nên chèn một Nút quay (Điều khiển ActiveX) đầu tiên, và sau đó nắm bắt ngay nó, chọn Xem mã, sau đó, sao chép và dán đoạn mã dưới đây vào giữa các tập lệnh hiện có,
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

Hãy cố gắng, hy vọng nó có thể giúp bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hi!

Tôi rất mới với VBA và tôi đã thử giải pháp này cho một bảng tính excel mà tôi có. Về cơ bản, tôi chỉ có một danh sách dài trong excel, trong đó bạn ở cột T nên nhập Có hoặc Không, và tôi muốn, Nếu được nhập Có, hãy chạy macro ... Tôi đã thử rất nhiều cách khác nhau để xác định phạm vi nhưng không có gì hoạt động.

Sub worksheet_change (ByVal target As Range)

Đặt mục tiêu = Phạm vi ("T: T")
Nếu target.Value = "Có" Thì
Gọi Macro1
Cuối Nếu

End Sub

Tôi nêu bật vấn đề này (lỗi thời gian chạy- kiểu không khớp): Nếu target.Value = "Có" Thì

Ai có thể giúp đỡ?

Trân trọng, Isabella
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Westergaard
Có thể mã VBA sau đây có thể giúp bạn: (Lưu ý: Vui lòng thay đổi tên của vĩ mô1 đến tên mã của riêng bạn)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

Hãy cố gắng, hy vọng nó có thể giúp bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cám ơn rất nhiều! Bây giờ nó hoạt động :)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Cách sửa đổi mã này dựa trên kết quả tính toán công thức ô A1
Sub Worksheet_Calculate()
Hãy giúp tôi

Private Sub Worksheet_Change (ByVal Target As Excel.Range)
If Target.Cells.Count> 1 Then Exit Sub
Nếu IsNumeric(Target) Và Target.Address = "$A$1" Thì
Chọn mục tiêu trường hợp. Giá trị
Trường hợp 10 đến 50: Macro1
Trường hợp> 50: Macro2
Kết thúc Chọn
Cuối Nếu
End Sub
Xếp hạng 5 trong 5
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào FG,
Để làm cho mã hoạt động trong các ô công thức, vui lòng áp dụng mã bên dưới:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    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
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

Xin vui lòng có một thử, hy vọng nó có thể giúp bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Skyyang. Spero tu possa aiutarmi. Ho un programmino in vba che basandosi su variazioni di prezzo di una cella (E1), collegata in DDE con una piattaforma di trading di borsa, fissa i prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga nextiva in base a un intervallo temporale impostato all'apertura del Foglio elettronico. Thuật toán của tôi về việc bán hàng của tôi che dấu hai chấm: "BH" và "BI" được hiển thị trực quan bằng tiếng Anh trước khi tôi nhận được và nhà cung cấp, một mình tôi quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quello di cui avrei bisogno è di un avviso sonoro.wav che mi avvisi quando viene restituito un Valore, di acquisto o di vendita, in modo di non dover fissare lo schermo per 14 ore al giorno. Để chứng minh một bộ mã hóa "SoundMe ()" được phát trực tuyến, bạn có thể sử dụng nó để tạo ra khối lượng lớn hoặc một minimo nhỏ không cần thiết mới trong chương trình cuối cùng mà bạn tạo ra trước đó. Bạn nghĩ gì về vấn đề bạn có thể giải quyết? Grazie per l'attenzione
Stefano
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,
ho chứng minh danh sách cho phép người giàu có 2 vĩ mô cambio del valore di una cella, se quel cambio deriva of una funzione "se" non funziona, se Digito and Valori (vero or f also) funziona.

Đến posso ovviare?
Cuối cùng, bạn có thể sử dụng tất cả các điều kiện của sulla cella và bạn có thể xác minh rõ ràng danh sách của bạn không?

Grazie
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,
bạn sẽ hướng dẫn một macro quando una trong một cella viene chèn vào một controllo "if" o se viene inserita data e non un numero.

Quảng cáo này giống như ô A1 chèn vào: If(B2=0;vero;falso) e la macro leggendo vero mi nasconde lo sheet2 altrimenti mi scpre la sheet 2.

Đến sở hữu giá vé?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso).

Cảm ơn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Carlo,
Trên thực tế, mã thứ hai trong bài viết này có thể giải quyết vấn đề của bạn.
Chú thích: Bạn chỉ cần thay đổi văn bản thành True và False thành mã, và thay đổi tên mã thành của riêng bạn.
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "True" Then
 Call Macro1
End If
If target.Value = "False" Then
Call Macro2
End If
End Sub 


Vui lòng thử lại, cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,

ich bräuchte dafür ein Makro,

ich kann dieses Vấn đề nicht alleine lösen, wäre super wenn mir jemand helfen könnte.

Trong M1 steht die Zahl 5, jetzt soll der Bereich von A83 bis A683 auf die Zahl 5 geprüft werden, sollte zB A111 die Zahl 5 enthalten, dann soll C111 + 1 ( wenn in C111 23 steht dann soll da 24 stehen). Vì vậy, wenn trong A444 eine 5 steht, dann soll C444 + 1 ( wenn C444 = 99 dann 100).
Immer wenn der Wert mit M1 übereinstimmt, dann soll diese Zelle in Spalte C immer wieder + 1 zählen. Ngoài ra 23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

Cảm ơn bạn trước.

LG Stfan
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL