Lớp học GPE tháng 10 - TPHCM: Conditional Formatting và Data Validation (tối 4, 6/10) | Excel cơ bản (tối 9, 11, 13/10) |
Thuần thục các hàm dò tìm (tối 10, 12/10) | Tất tần tật về PivotTable (tối 16, 18, 20/10) |
Tất tần tật về Filter và Advanced Filter (tối 23, 25/10) | Name động và biểu đồ (tối 24, 26, 28/10)

Đăng ký học Khởi đầu cùng Google Spreadsheet - 2 chủ nhật 1 và 8/10 - TPHCM

Đăng ký học Xây dựng ứng dụng Form bằng VBA - 2 chủ nhật 15 và 22/10 - TPHCM

Hỏi về cách sử dụng Msgbox

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi Raiso, 19 Tháng ba 2009.

  1. Raiso

    Raiso Thành viên mới

    Các bậc tiền bối giúp mình với!
    Mình đang có một sub default thực hiện tính toán như sau;

    sub Default()
    .....tính toán tính toán
    msgbox (xxx, vbOKCancel)
    .... tính toán tiếp
    end sub

    Vấn đề là sub này ẩn và chỉ tính cho 1 dòng trong excel. Mình có rất nhiều dòng cần tính và không muốn cứ click đi click lại macro này mãi, nên mình viết 1 sub khác call sub này để chạy, đại loại như bên dưới:

    sub New()
    i=1
    with session
    do while xxxxx
    Default
    {***}
    i = i +1
    Loop
    End with
    End sub

    Vấn đề là lúc call sub default lên thì nó đưa ra lựa chọn OK hay cancel, mình phải click OK thì chương trình mới chạy tiếp. Mình muốn hỏi câu lệnh để tự động chọn OK cho msgbox luôn. Lưu ý là sub default bị ẩn đi, mình không thể view hay edit hay làm cho nó hiện lên được (đã bị mã khóa bởi user khác). Tất cả mình có thể làm là viết lệnh trong sub New của mình và tác động lên msgbox của sub Default.

    Mình muốn hỏi có cách nào không ạ? Mong các bạn giúp đỡ mình với.
     
  2. levanduyet

    levanduyet Thành viên danh dự

    Nếu tự động thì, cần gì phải dùng Msgbox?

    LVD
     
  3. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Vì cái MsgBox này nằm trong 1 sub đã được Protect, không sửa được (chỉ có thể gọi cho nó chạy) ---> Và ở đây tác giả muốn khỏi cần bấm YES khi MsgBox xuất hiện
    Đại khái thế này:
    - Khi gọi sub này ra, sau quá trình tính toán nó sẽ xuất hiện 1 MsgBox
    - Vậy liệu ta có cách nào viết 1 sub khác, gọi Sub kia ra và tự động bấm YES luôn ---> Giống như Sendkyes vậy đấy
     
  4. solomon2211

    solomon2211 Thành viên tích cực

    Mặc nhiên nút OK sẽ chọn đối với vbOKCancel. Bạn chỉ việc thêm dòng lệnh
    trước lệnh call Default

    Ý bạn như ví dụ sau đây phải không?
     
    Lần chỉnh sửa cuối: 19 Tháng ba 2009
  5. yeudoi

    yeudoi Moderator Staff Member

    Cái này không dùng msgbox được bạn ah. Chỉ có thể dùng status bar hoặc là Progress Bar thôi bạn ah.
     
  6. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Theo cách nghĩ thông thường thì phài Call Default trước, sau đó mới Sendkeys ---> nhưng làm vậy nó cóc chạy ----> Đặt Sendkeys trước thì ngon lành
    Hay ghê!... Cũng là 1 kinh nghiệm khi lập trình... Cảm ơn bạn!
    Tôi nghĩ nó gần giống ví dụ này đây:
    PHP:
    Sub Default()
      [
    A1] = 1
      MsgBox 
    "Tinh tiep chu?"
      
    [A2] = [A1] + 5
    End Sub
    PHP:
    Sub Trunggian()
      
    Application.SendKeys ("{ENTER}")
      
    Call Default
    End Sub
    Nếu chạy trực tiếp sub Default thì có MsgBox ---> Nếu chạy sub Trunggian thì MsgBox được bỏ qua
     
    Lần chỉnh sửa cuối: 19 Tháng ba 2009
  7. Raiso

    Raiso Thành viên mới

    Mình đã thử chạy sendkey trước rồi mới call default nhưng mà vẫn không chạy được. Có cách nào khác nữa không bạn nhỉ
     
  8. solomon2211

    solomon2211 Thành viên tích cực

    Vậy bạn gửi file lên xem thử đi.
     

Chia sẻ trang này