2016-07-10 25 views
5

Tôi có một vĩ mô ngắn mà đặt một ô trong chế độ chỉnh sửa bằng cách sử dụng lệnh:nào Window đang hoạt động

Application.SendKeys "{F2}" 

Các dòng mã chạy đúng nếu vĩ mô đang chạy từ bảng tính sử dụng, ví dụ, bình thường Ribbon giao diện (có nghĩa là vì F2 đặt ô hiện hành vào Edit Mode)

Nếu tôi chạy macro từ cửa sổ VBE, macro thất bại vì VBE giải thích s F2 là lệnh để hiển thị Trình duyệt đối tượng.

tôi muốn bao gồm một thử nghiệm trong vĩ mô để kiểm tra này:

Nếu tính được gọi là cửa sổ hoạt động, tiến hành chạy.
Nếu VBE là cửa sổ hoạt động, sau đó phát hành cảnh báo MsgBox và hủy bỏ.

Tôi không biết cách xác định cửa sổ nào đang hoạt động. ActiveWindow.Caption luôn hiển thị nội dung nào đó như:

Book1.xlsm 
+1

Xem nếu điều này giúp: http://stackoverflow.com/questions/33266859/vba-copypastecode-with -sendkeys/33269447 # 33269447 –

+1

Giá trị trong ô có thay đổi không nếu trang tính đang hoạt động. Bạn có thể kiểm tra thay đổi không? Thay vì sử dụng SendKeys, bạn có thể sử dụng InputBox thay thế không? –

+1

@ScottCraner Ý tưởng là tốt, nhưng nó vẫn rời khỏi cửa sổ * VBE * tập trung ................ Phương pháp của Rodger hoạt động! –

Trả lời

6

Tôi nghĩ bạn gặp phải sự cố VBE. Nếu giải pháp là để tránh mắc lỗi trong khi mã hóa, điều này có phù hợp với bạn không? Nó không xuất hiện rằng có một cách để xem nếu activewindow là VBE mà tôi có thể tìm thấy. Nếu giải pháp này không đáp ứng nhu cầu của bạn, Using VBS in WHS có thể hoạt động cho bạn hoặc gọi một chương trình bên ngoài như tự động.

Lưu ý rằng nó sẽ không hoạt động nếu bạn đang bước qua mã nhưng tôi cho rằng bạn thực sự quan tâm đến việc nhấn nút chạy từ bên trong cửa sổ VBE và nó sẽ làm việc cho điều đó. Đặt dòng đầu tiên ở trên cùng của mã của bạn hoặc ngay trước phần có sendkeys hoặc whatnot.

ThisWorkbook.VBProject.VBE.MainWindow.Visible = False 
If ActiveWindow.Caption <> "Book1.xlsm" Then MsgBox ("Test") Else MsgBox ("testelse") 

Bạn sẽ không thể alt-tab trở lại, phải nhấn Alt-F11

+0

Cảm ơn bạn rất nhiều ................ Tôi sẽ kiểm tra điều này vào ngày hôm nay ................... –

+1

Điều này phù hợp với sự hoàn hảo! Tôi không cần phải thực hiện bất kỳ thử nghiệm, chỉ cần đóng cửa sổ * VBE * ....................... Cảm ơn một lần nữa! –

Các vấn đề liên quan