Hộp thông báo xuất hiện trên mỗi bảng tính


0

Tôi đang sử dụng đoạn mã sau để điền vào hộp thông báo khi ngày hôm nay được nhập vào Ô H3. Vấn đề là hộp thông báo xuất hiện trên mỗi bảng tính. Tôi chỉ muốn nó trên trang tính tôi đặt mã (trong trường hợp này là "Trang tính 1") và tôi muốn thông báo tiếp tục bật lên cho đến khi ngày bị xóa. Hãy giúp tôi!

Sub Worksheet_Calculate()
Dim myMessage As String

    myMessage = ""

    If Range("H3").Value = Date Then
        If (myMessage <> "") Then myMessage = myMessage & vbCrLf
        myMessage = myMessage & "You have a new message. Delete the date next to the message box to acknowledge this message."

    End If

    If (myMessage <> "") Then MsgBox (myMessage)

End Sub

1
thử đặt Me. ở đằng trước Range("H3").Value
Scott Craner

Không hoạt động. Tôi không biết nếu tôi phải chỉ định "Trang tính 1" tại bất kỳ điểm nào trong mã.
JKnight

Bạn có muốn chạy cái này khi "bất kỳ" tế bào H3 nào bị thay đổi không? Bạn có muốn nó được chạy khi H3 được thay đổi trên tờ 1, tờ 2, tờ 3, v.v. không? Tôi cho là không
Eric F

Tôi chỉ muốn hộp thông báo bật lên trên Trang tính 1 khi bất kỳ ngày nào được nhập vào ô H3 trên Trang tính 1.
JKnight

Câu trả lời:


0

Cách tôi sẽ làm là tạo một macro với chương trình con mà bạn đã tạo và sau đó gọi nó từ sự kiện Worksheet_Change trên bảng tính mà bạn đang làm việc.

Đầu tiên: Tạo Macro (Nhà phát triển & gt; Macro)

Tiếp theo: Đặt mã của bạn vào macro thêm một biến để truyền tên trang tính.

Sub Worksheet_Calculate(SheetName as String) 
Dim myMessage As String

myMessage = ""

If Sheets(SheetName).Range("H3").Value = Date Then
If (myMessage <> "") Then myMessage = myMessage & vbCrLf
    myMessage = myMessage & "You have a new message. Delete the date next to the message box to acknowledge this message."

End If

If (myMessage <> "") Then MsgBox (myMessage) 
End Sub

Cuối cùng: Quay trở lại sổ làm việc và nhấp chuột phải vào tab trang tính. Chọn Xem mã và thêm một chương trình con Worksheet_Activate () gọi chương trình con được tạo trong macro (truyền tên trang tính làm tham số).

Private Sub Worksheet_Activate()
    Worksheet_Calculate "Sheet1" 
End Sub

Bây giờ, lần duy nhất hộp thông báo sẽ xuất hiện là nếu ô được chỉ định trên trang được chỉ định có dữ liệu được chỉ định.


Hộp thông báo chỉ bật lên một lần (Khi ngày được nhập). Tôi cần nó bật lên mỗi khi tôi nhấp vào trang tính và quay lại, miễn là có một ngày trong ô đó.
JKnight

Trong trường hợp đó, chỉ cần thay đổi sự kiện Worksheet_Change (ByVal Target As Range) thành sự kiện Worksheet_Activate (). Điều này sau đó nên làm những gì bạn muốn.
billyhoes

Không có chuyện gì xảy ra. Nó không còn nhắc hộp thông báo nữa
JKnight

Điều này hoạt động khi tôi tự giới thiệu nó trước tiên vì vậy tôi nghi ngờ rằng thói quen sai đã bị thay đổi, có một số vấn đề logic / lỗi đánh máy không phá vỡ hoàn toàn nhưng lại khiến nó không kích hoạt, hoặc bản chất của vấn đề là khác với những gì tôi hiểu về nó (điều cuối cùng ít có khả năng vì nó hoạt động cho bạn theo cách tôi đã thiết kế ban đầu khi nó bắn khi một ngày được nhập). Tôi sẽ đề nghị đặt các điểm dừng ở thói quen Kích hoạt () và tại mỗi bước trong thói quen macro và bước qua từng dòng để xem điểm dừng của nó.
billyhoes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.