Tạo và sử dụng class module để dùng chung như thế nào ?

Liên hệ QC

Ngày mai trời lại sáng

Thành viên thường trực
Tham gia
4/7/21
Bài viết
339
Được thích
139
Chào các bạn,
Mã:
Option Explicit
Private shName As String

Sub Test1()
    Dim sheet As Worksheet
    LayTenSheet
    Set sheet = ThisWorkbook.Worksheets(shName)
    MsgBox sheet.Index
End Sub
Sub Test2()
    Dim sheet As Worksheet
    LayTenSheet
    Set sheet = ThisWorkbook.Worksheets(shName)
    MsgBox sheet.Range("A1").Value
End Sub

Sub LayTenSheet()
    'ABCXYZ là codename
    shName = ABCXYZ.Name
End Sub

Với đoạn code trên sub LayTenSheet phải viết đi viết lại trong 2 sub test, nhờ các bạn hướng dẫn một cách làm khác cách sử dụng class module cho trường hợp này.
Cảm ơn nhiều.
 
Lần chỉnh sửa cuối:
Chào các bạn,
Mã:
Option Explicit
Private shName As String

Sub Test1()
    Dim sheet As Worksheet
    LayTenSheet
    Set sheet = ThisWorkbook.Worksheets(shName)
    MsgBox sheet.Index
End Sub
Sub Test2()
    Dim sheet As Worksheet
    LayTenSheet
    Set sheet = ThisWorkbook.Worksheets(shName)
    MsgBox sheet.Range("A1").Value
End Sub

Sub LayTenSheet()
    'ABCXYZ là codename
    shName = ABCXYZ.Name
End Sub

Với đoạn code trên sub LayTenSheet phải viết đi viết lại trong 2 sub test, nhờ các bạn hướng dẫn một cách làm khác cách sử dụng class module cho trường hợp này.
Cảm ơn nhiều.
Ví dụ về Class Module như của bạn thì chưa thiết thực đâu, thử xem cái này coi có hiểu gì không?
 

File đính kèm

  • ClassCtrl.xlsm
    16.3 KB · Đọc: 19
Upvote 0
Ví dụ về Class Module như của bạn thì chưa thiết thực đâu, thử xem cái này coi có hiểu gì không?
Cảm ơn chú @giaiphap để cháu tìm hiểu thêm ví dụ của chú, vậy với trường hợp của cháu bài 1 có dùng class để thuận tiện hơn được không? Nếu có nhiều ví dụ từ cơ bản nhất để cháu tìm hiểu thêm thì tốt ạ.
 
Upvote 0
Trời hỡi. Chuyện bé xíu thế mà cũng dao to búa lớn, cỏ lát mộ đùn.
Ai xui dại bạn vậy?

Private Function LayTenSheet()
'ABCXYZ là codename
shName = ABCXYZ.Name
End Function

Sub Test1()
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets(LayTenSheet)
MsgBox sheet.Index
End Sub
Sub Test2()
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets(LayTenSheet)
MsgBox sheet.Range("A1").Value
End Sub
 
Upvote 0
Trời hỡi. Chuyện bé xíu thế mà cũng dao to búa lớn, cỏ lát mộ đùn.
Ai xui dại bạn vậy?

Private Function LayTenSheet()
'ABCXYZ là codename
shName = ABCXYZ.Name
End Function

Sub Test1()
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets(LayTenSheet)
MsgBox sheet.Index
End Sub
Sub Test2()
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets(LayTenSheet)
MsgBox sheet.Range("A1").Value
End Sub
ồ cháu chào chú , sub LayTenSheet cháu đang ví dụ lấy tên 1 sheet thôi chứ trong cái sub đó cháu gọi nhiều lắm gần như tất cả các sheet trong tập tin.
Đại loại cháu muốn khi tên sheet thay đổi không vấn đề gì cả, có thể sử dụng codename thay cho khai báo ThisWorkbook.Worksheets(tên sheet) cũng được nhưng cháu đang thử tìm thiều " cỏ lát mộ đùn" :D ..
Chú chỉ cháu với đao to búa lớn cũng được :D
 
Upvote 0
Cỏ lát mộ đùn có ba công dụng chính:
1. dùng để lập đối tượng. Bạn phải biết LTHĐT ít nhất là bậc trung mới có thể làm được chuyện này. Và muốn thực sự thấy cái hay của nó thì phải ở bậc cao.
2. dùng để thay thế một số chức năng có sẵn trong Form, Controls, các Modules, và các hiện tượng.
3. dùng để đi đường vòng qua những chỗ mà các code mô đun khác không làm được do bảng tính không cho phép làm.

Cỡ viết cái code như bài #1 của bạn thì cần học nhiều hơn nữa trước khi nghĩ đến nó. Tôi không nói thêm nữa.
 
Upvote 0
Cỏ lát mộ đùn có ba công dụng chính:
1. dùng để lập đối tượng. Bạn phải biết LTHĐT ít nhất là bậc trung mới có thể làm được chuyện này. Và muốn thực sự thấy cái hay của nó thì phải ở bậc cao.
2. dùng để thay thế một số chức năng có sẵn trong Form, Controls, các Modules, và các hiện tượng.
3. dùng để đi đường vòng qua những chỗ mà các code mô đun khác không làm được do bảng tính không cho phép làm.

Cỡ viết cái code như bài #1 của bạn thì cần học nhiều hơn nữa trước khi nghĩ đến nó. Tôi không nói thêm nữa.
Hôm nay chú không được khỏe hay sao mà viết ngắn vậy ạ :D
Nhưng mà cách viết bài #4, cháu cũng thấy hay đó chú, tham khảo thêm được một cách viết độc đáo: ThisWorkbook.Worksheets(HÀM)
 
Upvote 0
Web KT

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

Back
Top Bottom