Thắc Mắc về thanh công cụ Declaration trong VBA (2 người xem)

Người dùng đang xem chủ đề này

Tamborghini

Thành viên mới
Tham gia
23/9/14
Bài viết
3
Được thích
0
chào các cao thủ VBA,
em mới tập tành VBA nên có nhiều khúc mắc, các anh em giải đáp giúp nhé.
cho em hỏi phần bên Declaration có ý nghĩa gì vậy ah?
ví dụ như chọn workbook bên tab bên trái, sau đó chọn SheetSelectionChange -> nó tạo ra dòng:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

là như thế nào ah

JgoUJywDnKwAAAABJRU5ErkJggg==
 
chào các cao thủ VBA,
em mới tập tành VBA nên có nhiều khúc mắc, các anh em giải đáp giúp nhé.
cho em hỏi phần bên Declaration có ý nghĩa gì vậy ah?
ví dụ như chọn workbook bên tab bên trái, sau đó chọn SheetSelectionChange -> nó tạo ra dòng:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

là như thế nào ah

JgoUJywDnKwAAAABJRU5ErkJggg==
Theo tôi hiểu thì cái vị trí Declarations ấy là các thủ tục chuẩn (đã được MS Excel trang bị sẵn) dành cho đối tượng được chọn ở bên trái, và nó là các sự kiện đặc trưng của đối tượng ở bên trái. Chẳng hạn: Với đối tượng Worksheet thì có các sự kiện SelectionChange (thay đổi ô chọn), Change (thay đổi giá trị trên sheet), Activate (chọn sheet), Deactivate (bỏ chọn sheet),...; với đối tượng Workbook thì có các sự kiện Open (mở file), BeforeClose (trước khi đóng file), BeforeSave (trước khi lưu file),... Các thủ tục này sẽ được gọi thực hiện khi có sự kiện tương ứng với tên thủ tục được phát sinh. Người dùng sẽ sử dụng các lệnh phù hợp với các tham số chuẩn có trong từng thủ tục này (chẳng hạn Sh, Target, Cancel,...) để phục vụ cho mục đích sử dụng của mình.
 
Upvote 0
Declaration là mục khai báo ở đầu module hay form. Ở đây đặt các khai báo biến hay hằng bằng từ khoá Private hoặc Public. Ngoài ra còn có các chỉ dẫn cho trình biên dịch như Option explicit hay Option base.
 
Upvote 0
Theo tôi hiểu thì cái vị trí Declarations ấy là các thủ tục chuẩn (đã được MS Excel trang bị sẵn) dành cho đối tượng được chọn ở bên trái, và nó là các sự kiện đặc trưng của đối tượng ở bên trái. Chẳng hạn: Với đối tượng Worksheet thì có các sự kiện SelectionChange (thay đổi ô chọn), Change (thay đổi giá trị trên sheet), Activate (chọn sheet), Deactivate (bỏ chọn sheet),...; với đối tượng Workbook thì có các sự kiện Open (mở file), BeforeClose (trước khi đóng file), BeforeSave (trước khi lưu file),... Các thủ tục này sẽ được gọi thực hiện khi có sự kiện tương ứng với tên thủ tục được phát sinh. Người dùng sẽ sử dụng các lệnh phù hợp với các tham số chuẩn có trong từng thủ tục này (chẳng hạn Sh, Target, Cancel,...) để phục vụ cho mục đích sử dụng của mình.

cám ơn a đã quan tâm
khi nãy em có thay đổi tên sub (Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range ->
Private Sub Workbook_SheetSelectionChane(ByVal Sh As Object, ByVal Target As Range) thì không được. tức là các công thức này là mặc định cho những sự kiện tương ứng không thể thay đổi. với lại các biến như Sh, Target, Cancel... cũng có các chức năng tương ứng như anh nói, chứ không thể thay đổi?
 
Upvote 0
cám ơn a đã quan tâm
khi nãy em có thay đổi tên sub (Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range ->
Private Sub Workbook_SheetSelectionChane(ByVal Sh As Object, ByVal Target As Range) thì không được. tức là các công thức này là mặc định cho những sự kiện tương ứng không thể thay đổi. với lại các biến như Sh, Target, Cancel... cũng có các chức năng tương ứng như anh nói, chứ không thể thay đổi?
Đúng rồi, đây là những thủ tục chuẩn và với những cái tên chuẩn mà MS Excel đã đặt sẵn, và để dùng cho những sự kiện đặc trưng cho từng đối tượng (Worksheet, ThisWorkbook), bạn có thể làm gì với chúng thì làm nhưng không được đổi tên thủ tục cũng như đổi tên/thứ tự các biến trong đó (ngược lại thì nó không chạy ráng chịu à).
 
Upvote 0
VBA được mặc định sẵn cho những cái móc nối (hooks) vào các sự kiện có tên là WorkBook/WorkSheet/_SelectionChange , vv...
Những cái tên đó không thay đổi được, trù phi bạn dùng thủ thuật thay đổi những móc nối mặc định kia.

Tuy nhiên, những cái tên Sh, Target, ... chỉ là tên tham số. Theo nguyên tắc ngôn ngữ lập trình, tham số chỉ bắt buộc theo vị trí và kiểu thôi, việc đặt tên thì bạn có toàn quyền.

Tóm lại, nếu bạn để mặc định thì VBE tự động cho bạn "Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)".
Nhưng nếu bạn muốn sửa thành "Private Sub Workbook_SheetSelectionChange(ByVal hS As Object, ByVal tegraT As Range))" nó vẫn hoạt động như thường.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom