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

Làm thế nào để kích hoạt hoặc chạy Macro bằng cách nhấp vào một ô cụ thể trong Excel?

Khi làm việc với Microsoft Excel, bạn có thể biết cách chạy một Macro nhất định bằng Nút lệnh. Nhưng bạn có biết cách chạy Macro chỉ bằng cách nhấp vào một ô cụ thể trong trang tính không? Bài viết này sẽ chỉ cho bạn phương pháp kích hoạt Macro bằng cách nhấp vào một ô cụ thể.

Kích hoạt hoặc chạy Macro bằng cách nhấp vào một ô cụ thể có mã VBA


Kích hoạt hoặc chạy Macro bằng cách nhấp vào một ô cụ thể có mã VBA

Mã VBA sau có thể giúp bạn chạy Macro bằng cách bấm vào một ô cụ thể trong Excel. Hãy làm như sau.

1. Trên trang tính có ô bạn cần bấm để chạy Macro, bấm chuột phải vào tab trang tính, sau đó bấm Mã Chế độ xem từ trình đơn ngữ cảnh.

2. bên trong Microsoft Visual Basic cho các ứng dụng , sao chép và dán tập lệnh VBA bên dưới vào cửa sổ Mã.

Mã VBA: Kích hoạt hoặc chạy Macro bằng cách nhấp vào một ô cụ thể

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Chú ý:

1. Trong đoạn mã, D4 là ô bạn sẽ nhấp vào để chạy Macro;

2. Vui lòng thay thế tên mã MyMacro với Macro bạn sẽ chạy trong trang tính. Xem ảnh chụp màn hình:

3. Nhấn nút Khác + Q các phím đồng thời để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.

Từ bây giờ, khi nhấp vào ô D4 trong trang tính hiện tại, Macro được chỉ định của bạn sẽ được kích hoạt ngay lập tức.


Các bài liên quan:


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 (37)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kích hoạt hoặc chạy Macro bằng cách nhấp vào một ô cụ thể với mã VBA, không thể làm cho điều này hoạt động. Tôi đã thử nó theo nhiều cách khác nhau, nhưng nó không bao giờ vượt qua những gì đã hứa.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã này sẽ chỉ hoạt động nếu bạn đặt nó trong mô-đun "ThisWorkbook". Nó không hoạt động trên một mô-đun chung.
tên sổ làm việc> Đối tượng Microsft Excel> ThisWorkbook.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã này sẽ hoạt động trên mô-đun mã trang tính. Bạn cần nhấp chuột phải vào tab trang tính và nhấp vào 'Mã Xem'. Thao tác này sẽ chỉ mở mô-đun mã cho trang tính đó. Sau đó, dán mã đã đề cập.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nếu bạn muốn có nhiều macro, các ô chạy macro khác nhau trên cùng một trang - điều đó có khả thi không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Simon thân mến,
Tập lệnh VBA dưới đây có thể giúp bạn chạy các macro khác nhau bằng cách nhấp vào các ô trên cùng một trang.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Nếu Target.Count = 1 thì
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D4")) Không có gì thì Hãy gọi MyMacro1
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D8")) Không có gì thì Hãy gọi MyMacro2
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D10")) Không có gì thì Hãy gọi MyMacro3
Cuối Nếu
End Sub

Vui lòng thêm dòng "If Not Intersect (Target, Range (" D10 ")) Is Nothing Then Call MyMacro" để chạy thêm macro bằng cách nhấp vào ô. Và thay đổi tên ô và macro trong mã dựa trên nhu cầu của 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
Nó không hoạt động trên Excel của tôi. Mã là chính xác?
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 Camila,
Xin lỗi vì sự bất tiện. Hãy thử mã VBA bên dưới.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Làm mờ xRgArr làm biến thể
Dim xFunArr dưới dạng biến thể
Dim xFNum dưới dạng số nguyên
Làm mờ xStr dưới dạng chuỗi
Dim xRg theo phạm vi
xRgArr = Array ("A1", "D1", "C1") 'Các ô được sử dụng để kích hoạt macro
xFunArr = Array ("Tên mã1", "Tên mã2", "Tên mã 3") 'Tên mã tương ứng
Nếu Lựa chọn.Count = 1 Thì
Đối với xFNum = 0 Đến UBound (xRgArr)
Đặt xRg = ActiveSheet.Range (xRgArr (xFNum))
Nếu không giao nhau (Target, xRg) thì không có gì
xStr = xFunArr (xFNum)
Ứng dụng.Run xStr
Cuối Nếu
Sau
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
Điều này hoạt động hoàn hảo và sẽ giúp tôi tiết kiệm rất nhiều thời gian - cảm ơn bạn đã chia sẻ kiến ​​thức của mình - được đánh giá cao!
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 rất vui vì tôi có thể giúp đỡ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tuyệt quá. Nó hoạt động tốt ... 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
Chào.

Tôi có điều này đang hoạt động tốt, nhưng tôi muốn thêm một điều kiện để chạy macro. Tôi chỉ muốn chạy macro nếu ô dọc theo ô mà tôi nhấp vào chứa một giá trị nhất định.
ví dụ: Khi tôi nhấp vào ô F6, tôi muốn macro chạy nếu ô E6 chứa "x", nhưng nếu ô E6 trống, macro không được chạy.
Hy vọng điều đó có ý nghĩa.
Cảm ơn

đây là mã gốc của tôi mà không có điều kiện:


Tùy chọn rõ ràng

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Nếu Lựa chọn.Count = 1 Thì
Nếu Không Giao nhau (Mục tiêu, Phạm vi ("F6: F18")) thì Không có gì
Ngày gọi
Cuối Nếu
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
Chào,
Mã VBA sau đây có thể giúp bạn giải quyết vấn đề. Hãy thử và cảm ơn bạn đã bình luận.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg theo phạm vi
Nếu Không Giao nhau (Mục tiêu, Phạm vi ("F6: F18")) thì Không có gì
Đặt xRg = ActiveSheet.Cells (Target.Row, Target.Column - 1)
If (xRg.Value = "") Hoặc (xRg.Value <> "X") Sau đó thoát Sub
Gọi ngày tháng
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
Cảm ơn nhưng những gì về các ô đã hợp nhất?
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 Alber!
Mã không hoạt động cho các ô đã hợp nhất.
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 sử dụng OpenOffice và đã nhấp chuột phải vào tab trang tính và các sự kiện đã chọn, sau đó chọn macro này từ MyMacros .. Tuy nhiên, tôi nhận được và gặp lỗi ở dòng sau: If Selection.Count = 1 Then >>> "Basic runtime error, biến không được xác định ...
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hi James,
Mã chỉ hoạt động cho Microsoft Office Excel. Cảm ơn bình luận của 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
Mã đầy đủ của tôi trong macro này là:


Private Sub Worksheet_SelectionChange (ByVal Target As Range)

Dim val dưới dạng chuỗi
REM val = Phạm vi ("A2"). Giá trị

Nếu Lựa chọn.Count = 1 Thì
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D24")) thì Không có gì
REM Gọi MyMacro
val = Phạm vi ("D24"). Giá trị
Phạm vi ("B27"). Giá trị = val
Cuối Nếu
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
Chủ đề này rất hay và mình đang quan tâm nhưng không biết tìm ở đâu, rất may bạn tạo topic này, mong mọi người giúp đỡ. http://run-3.online
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Excel 2002 (XP): Nếu một sổ làm việc được mở bằng cách chọn "Tệp" và nhấn "Shift", nó sẽ tắt macro trong trang tính đó, vấn đề là nếu tôi chọn "Công cụ> Macro> Macros ...", tôi có thể chạy macro dù sao, làm thế nào để giải quyết?
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 Roger
Chúng tôi chưa kiểm tra mã trong Excel 2002 (XP). Tại sao không sử dụng phiên bản mới hơn của Microsoft Office? Nó sẽ dễ dàng hơn cho công việc của 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
Kết quả tương tự năm 2010.
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 sao không chỉ sử dụng một số phiên bản mới hơn, nó sẽ dễ dàng hơn
https://games.lol/racing/
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, nhưng còn một số ô cho nhấp chuột để chạy một số macro.
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,
Hãy thử mã VBA bên dưới.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Làm mờ xRgArr làm biến thể
Dim xFunArr dưới dạng biến thể
Dim xFNum dưới dạng số nguyên
Làm mờ xStr dưới dạng chuỗi
Dim xRg theo phạm vi
xRgArr = Array ("A1", "D1", "C1") 'Các ô được sử dụng để kích hoạt macro
xFunArr = Array ("Tên mã1", "Tên mã2", "Tên mã 3") 'Tên mã tương ứng
Nếu Lựa chọn.Count = 1 Thì
Đối với xFNum = 0 Đến UBound (xRgArr)
Đặt xRg = ActiveSheet.Range (xRgArr (xFNum))
Nếu không giao nhau (Target, xRg) thì không có gì
xStr = xFunArr (xFNum)
Ứng dụng.Run xStr
Cuối Nếu
Sau
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
Cảm ơn vì mã này. Có thể làm cho điều này hoạt động bằng cách nhấp vào một ô được hợp nhất với các ô khác không?
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 M.Symonds!
Mã trong bài viết này có thể giúp bạn: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Cảm ơn bạn đã bình luận của 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, tôi đang cố gắng sử dụng mã này để chạy dán macro nhưng dường như không thể tìm ra cách dán macro đúng cách.

đây là Marco gốc của tôi

Dán phụ ()
'
'Dán Macro
'

'
Phạm vi ("B34"). Chọn
ActiveSheet.PasteSpecial Format: = "HTML", Link: = False, DisplayAsIcon: = _
Sai, KhôngHTMLFormatting: = True
End Sub


mọi sự giúp đỡ đều được đánh giá cao
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, Cảm ơn bạn vì chủ đề thú vị của bạn. Ví dụ, điều gì sẽ xảy ra nếu tôi muốn nhấp vào D4 trong Sheet1 và xem kết quả của Macro trong Sheet2! F3.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Không làm việc nữa.
Worksheet_SelectionChange không tồn tại theo mặc định. Có nghĩa là bạn không thể sử dụng nó để kích hoạt macro.

Phụ duy nhất được nhúng mà bạn có thể sử dụng được tham chiếu trong danh sách thả xuống "Workbook", vì vậy ...

Điều gần nhất bạn có thể làm là sử dụng Workbook_SheetBeforeDoubleClick. Nhưng là sẽ vào chế độ Chỉnh sửa (vẫn không phải là vấn đề lớ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 CodeKiller.Worksheet_SelectionChange chỉ tồn tại trong trình soạn thảo Trang tính (Mã). Nhấp chuột phải vào tab trang tính và nhấp vào Mã Chế độ xem để kích hoạt trình chỉnh sửa Trang tính (Mã).
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều quan trọng cần nhấn mạnh là macro chỉ chạy trong trang tính.
Những người trong chúng ta sử dụng trình chỉnh sửa cơ bản trực quan thông thường thường kết thúc việc lưu trữ macro ở những nơi khác ngoài trang tính hiện tại.
Không có mã nào trong số những mã này sẽ hoạt động trong tình huống đó.
Tôi thấy mã này đơn giản hơn nhiều và nó hoạt động rất tốt đối với tôi: 

Private Sub Worksheet_SelectionChange (ByVal Target As Excel.Range)
Nếu không Giao nhau (Phạm vi ("d1"), Mục tiêu) Thì Không có gì
Gọi aa
Cuối Nếu
End Sub
Sub aa () 'đặt mã của bạn ở đây
Phạm vi ("D1"). Chọn
Lựa chọn. Sao chép
Phạm vi ("F1"). Chọn
ActiveSheet.PasteEnd Sub
John giếng
jnw.wells@gmail.com
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 John Wells, Cảm ơn bạn đã chia sẻ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đối với những người muốn điều này hoạt động cho các ô đã hợp nhất, cách nhanh nhất và ít tốn kém nhất là cập nhật Dòng 2 như sau:
Tùy chọn rõ ràng

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
If Selection.Count> 0 Then
Nếu không Giao nhau (Mục tiêu, Phạm vi ("D4")) thì Không có gì
Gọi MyMacro
Cuối Nếu
Cuối Nếu
End SubSelection.Count đang được sử dụng để xác định xem một lựa chọn đã được thực hiện trước khi thực thi macro còn lại hay chưa. Nếu lựa chọn của bạn bao gồm bốn ô đã được hợp nhất, Selection.Count sẽ bằng 4 và mã còn lại sẽ không bao giờ thực thi. Bạn cũng có thể thay đổi dòng 2 thành số ô chính xác đã được hợp nhất, nhưng điều đó sẽ gây ra sự cố nếu bạn hợp nhất các ô bổ sung.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Grandioso! Grazie, era una vita che sognavo di poterlo ticket, se può essere utile a Qualcuno avendo needità di eseguire più codici su più celle per
aumentare il numro di opzioni libea aggiungere le nuove istruzionisempre sotto la stessa option rõ ràng altrimente ci viene detto che il riferimento al
bảng tính non è univoco. Mi spiego meglio Evidenceemente su come ho adattato il codice con il mio esempio;

Tùy chọn rõ ràng
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Nếu Lựa chọn.Count = 1 Thì
Nếu không Giao nhau (Mục tiêu, Phạm vi ("Y64")) thì Không có gì
Phạm vi ("Y65: Y78"). Chọn
Phạm vi ("Y65"). Kích hoạt
Lựa chọn.ClearContents
Phạm vi ("Y65"). Chọn
Cuối Nếu
Nếu không Giao nhau (Mục tiêu, Phạm vi ("A33")) thì Không có gì
Phạm vi ("A33"). Chọn
Lựa chọn. Sao chép
ActiveWindow.WindowState = xlMinimized
SendKeys "^ v"
SendKeys "{BACKSPACE}"
Cuối Nếu
Cuối Nếu
End Sub

Grazie ancora è stata un'autentica meraviglia!

Massimo
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 không có bất kỳ kỳ vọng nào về danh hiệu đó, nhưng tôi càng ngạc nhiên hơn. Tác giả đã làm một công việc tuyệt vời. Tôi đã dành một vài phút để đọc và kiểm tra sự thật. Mọi thứ đều rất rõ ràng và dễ hiểu. Tôi thích những bài viết lấp đầy khoảng trống kiến ​​thức của bạn. Cái này thuộc loại này.
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,

Không có encuentro la manra de hacer lo que necesito. Espero de veras que me podáis ayudar.
Necesito que se lance una MACRO al hacer stere en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la acción) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber qué celda es la que se ha seleccionado.
Hay alguna manra de poder hacer eso?
Cảm ơn bạn rất nhiều trước.
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,
Địa chỉ ô là hằng số. Tất cả những gì bạn có thể di chuyển là giá trị của ô.
Ô bạn đã chỉ định trong mã VBA vẫn là ô kích hoạt mã VBA đã chỉ định.
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