Vấn đề Call hoặc không Call macro.

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,590
Được thích
16,653
Giới tính
Nam
Xin vui lòng giải thích cho tôi hiểu khi nào dùng Call và khi nào không dùng Call:

Tôi có một Macro1, muốn gọi macro này trong một lệnh khác

Sub Test1 ()
Call Macro1
End sub



Sub Test2()
Macro1
End sub

Sau khi kiểm tra tôi thấy cả hai cùng hoạt động như nhau. Tại sao?

Xin cảm ơn rất nhiều.
 
Đã hỏi thì sẳn đây em cũng đề luôn 1 câu bổ sung vào, là khi nào dùng Run? Mong mấy bác cao thủ chỉ dạy thêm ạ!

Application.Run "Macro1"

Thân.
 
Upvote 0
Xin vui lòng giải thích cho tôi hiểu khi nào dùng Call và khi nào không dùng Call:

Tôi có một Macro1, muốn gọi macro này trong một lệnh khác

Sub Test1 ()
Call Macro1
End sub



Sub Test2()
Macro1
End sub

Sau khi kiểm tra tôi thấy cả hai cùng hoạt động như nhau. Tại sao?

Xin cảm ơn rất nhiều.

Khi chạy 1 thủ tục, bác gõ Call + tên thủ tục đó hoặc chỉ tên thủ tục đều được. Dùng Call thì câu lệnh rõ ràng hơn so với chỉ dùng tên thủ tục đó.


Đã hỏi thì sẳn đây em cũng đề luôn 1 câu bổ sung vào, là khi nào dùng Run? Mong mấy bác cao thủ chỉ dạy thêm ạ!

Application.Run "Macro1"

Thân.

Cái lệnh Run này là phương thức riêng của đối tượng Application để thực thi 1 thủ tục nào đó (giống Call).Application có thể là Word, Excel, PowerPoint, AutoCad, ... và là đặc thù riêng của VBA.
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu chỉ có thêm Call thì thủ tục nhìn rõ ràng hơn, vậy theo ý của em là bỏ luôn chữ Call cho nhanh và ngắn gọn.

Sẳn đây cho em hỏi thêm 1 vấn đề này nữa. Em có một textbox, nếu textbox có giá trị là số thì OK, nếu textbox có giá trị là Chuỗi thì thông báo, em phải làm sao?
Xin vui lòng giúp đỡ! Cảm ơn rất nhiều.
 
Upvote 0
Theo tôi nên để Call trước thủ tục thi hành cho dễ phân biệt, nếu thủ tục gồm nhiều thủ tục con thì dễ phân biệt.

Để xác định số hay chuỗi dùng IsNumeric như thủ tục dưới đây:

Private Sub CommandButton1_Click()
If IsNumeric(Me.TextBox1.Value) Then
MsgBox "La so"
Else
MsgBox "La chuoi"
End If
End Sub
 
Upvote 0
Nếu chỉ có thêm Call thì thủ tục nhìn rõ ràng hơn, vậy theo ý của em là bỏ luôn chữ Call cho nhanh và ngắn gọn.

Sẳn đây cho em hỏi thêm 1 vấn đề này nữa. Em có một textbox, nếu textbox có giá trị là số thì OK, nếu textbox có giá trị là Chuỗi thì thông báo, em phải làm sao?
Xin vui lòng giúp đỡ! Cảm ơn rất nhiều.

PHP:
Private Sub cbmA_Click()
     If Not IsNumeric(Me.TextBox1.Value) Then
          MsgBox "TextBox1 phai la so, khong duoc gan chuoi",,"Thong Bao"
          Exit Sub
     End If
End Sub
 
Upvote 0
Web KT
Back
Top Bottom