Cách Gọi Sub Và Sử Dụng Class Module Trong Lập Trình VBA (1 người xem)

Liên hệ QC

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

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,538
Được thích
4,133
Giới tính
Nam
Mình đang tập nghiên cứu Class Module trong VBA mà chưa biết bắt đầu từ đâu ... cách thức và phương thức như thế nào ....Nói chung đang Tịt từ ABC...

Vậy mình xin lập đề tài này để cùng các Bạn trao đổi thảo luận về cách lập trình VBA trong Class Module...

Nếu Bạn nào có thắc mắc hay muốn hỏi gì về các sự kiện liên quan Tới Class Module thì ta cũng Úp bài lên đây gom lại một nơi để sau này có thành viên nào cần nghiên cứu và tham khảo thì vào đây coi cho nó tiện.. và nếu Bạn nào có sáng kiến hay muốn chia sẻ thì xin úp lên cho mọi người cùng nghiên cứu ....

Mình tập viết một Sub trên Module sau khi Sub này chạy xong thì gọi Sub tiếp theo Trong Class module mà lỗi code trong Class Module ....

Một cái rất đơn giản mà chưa biết cách xử lý vậy nhờ các Bạn Trợ Giúp....
Xin cảm ơn các Bạn

Code trong Module
PHP:
Sub Test_Module1()
    MsgBox "Day la code tren Module", 64, "OK"
    Call Test_Class1 ''Loi cai nay va cach xu ly de goi no chay
End Sub

Code trong Class Module
PHP:
Sub Test_Class1()
    MsgBox "Day la code tren Class1", 64, "OK"
End Sub
 

File đính kèm

Mình đang tập nghiên cứu Class Module trong VBA mà chưa biết bắt đầu từ đâu ... cách thức và phương thức như thế nào ....Nói chung đang Tịt từ ABC...

Vậy mình xin lập đề tài này để cùng các Bạn trao đổi thảo luận về cách lập trình VBA trong Class Module...

Nếu Bạn nào có thắc mắc hay muốn hỏi gì về các sự kiện liên quan Tới Class Module thì ta cũng Úp bài lên đây gom lại một nơi để sau này có thành viên nào cần nghiên cứu và tham khảo thì vào đây coi cho nó tiện.. và nếu Bạn nào có sáng kiến hay muốn chia sẻ thì xin úp lên cho mọi người cùng nghiên cứu ....

Mình tập viết một Sub trên Module sau khi Sub này chạy xong thì gọi Sub tiếp theo Trong Class module mà lỗi code trong Class Module ....

Một cái rất đơn giản mà chưa biết cách xử lý vậy nhờ các Bạn Trợ Giúp....
Xin cảm ơn các Bạn

Code trong Module
PHP:
Sub Test_Module1()
    MsgBox "Day la code tren Module", 64, "OK"
    Call Test_Class1 ''Loi cai nay va cach xu ly de goi no chay
End Sub

Code trong Class Module
PHP:
Sub Test_Class1()
    MsgBox "Day la code tren Class1", 64, "OK"
End Sub
Mình góp vui nghe không biết có phải cách hay hơn không? nhưng trình độ mình chỉ vậy thôi.
Bạn sửa lại code trong Module như sau:
Mã:
Sub Test_Module1()
    Dim clsX As Class1
    Set clsX = New Class1
        clsX.Test_Class1
    Set clsX = Nothing
End Sub
 
Upvote 0
Class chỉ là cái mẫu khai báo. Muốn sử dụng nó, bạn phải dựng đối tuợng.

Lệnh New chính là lệnh dựng đối tuợng (xem bài #2)

Hoặc bạn cũng có thể làm thế này:
With New Class1
.Test_Class1 ' gọi phương thức của đối tượng không tên dựng ra trong block with
End With

Nếu không muốn dựng đối tượng thì dùng module thường.
 
Upvote 0
Class chỉ là cái mẫu khai báo. Muốn sử dụng nó, bạn phải dựng đối tuợng.

Lệnh New chính là lệnh dựng đối tuợng (xem bài #2)

Hoặc bạn cũng có thể làm thế này:
With New Class1
.Test_Class1 ' gọi phương thức của đối tượng không tên dựng ra trong block with
End With

Nếu không muốn dựng đối tượng thì dùng module thường.
Cảm ơn Bạn.... cách viết này rất ngắn gọn

Vậy trong trường hợp mình có nhiều Class thì có thể đặt nó vào một Function hay một Array("1","2","3"...") được không... để khi cần mình có thể goi nó mà không phải khai báo lại

(tên Sub trong các Class không Trùng)
 
Upvote 0
[h=2]Tôi chẳng biết Class Module là cái gì cả[/h]Nhưng chỉ biết khai báo cái gì bên đó thì tất cả các sub trong Module đều dùng được, không biết phải vậy không???????
 
Upvote 0
Nếu Bạn biết chỉ cho một tí đi ...--=0

Em ở gần QuangHai1969, sao không gặp em nó cho lẹ, còn anh chỉ có biết nhậu thôi, hôm nào em với QuangHai1969 qua Đồng Nai ghé nhà anh chơi (QuangHai biết nhà anh).

Nếu qua nhớ thông tin cho anh biết trước để thông tin cho các chiến hữu ở Đồng Nai biết mà ngênh chiến.
 
Upvote 0
Em ở gần QuangHai1969, sao không gặp em nó cho lẹ, còn anh chỉ có biết nhậu thôi, hôm nào em với QuangHai1969 qua Đồng Nai ghé nhà anh chơi (QuangHai biết nhà anh).

Nếu qua nhớ thông tin cho anh biết trước để thông tin cho các chiến hữu ở Đồng Nai biết mà ngênh chiến.
Ok Anh ... em qua đồng nai thường mà ...Em gặp Anh ở vườn cau Sinh nhật GPE năm 2014 rồi
 
Upvote 0
Ok Anh ... em qua đồng nai thường mà ...Em gặp Anh ở vườn cau Sinh nhật GPE năm 2014 rồi

Nhưng lúc đó anh chưa biết em, vậy bây giờ làm lại, hôm tháng trước các chiến hữu gặp nhau nhưng chưa biết em nên không gọi, lần sau anh sẽ gọi QuangHai1969 kêu em cùng tham gia cho vui.
 
Upvote 0
Ok Anh ... em qua đồng nai thường mà ...Em gặp Anh ở vườn cau Sinh nhật GPE năm 2014 rồi

Nhưng lúc đó anh chưa biết em, vậy bây giờ làm lại, hôm tháng trước các chiến hữu gặp nhau nhưng chưa biết em nên không gọi, lần sau anh sẽ gọi QuangHai1969 kêu em cùng tham gia cho vui.

Chắc xỉn hay sao ấy, nhấn nút trả lời mà lại ra 2 bài viết cùng 1 lúc.
 
Lần chỉnh sửa cuối:
Upvote 0
...

Vậy trong trường hợp mình có nhiều Class thì có thể đặt nó vào một Function hay một Array("1","2","3"...") được không... để khi cần mình có thể goi nó mà không phải khai báo lại

(tên Sub trong các Class không Trùng)

Tên sub trùng hay khong trùng chả thành vấn đề. Một trong những mục đích của class là để tách rời code khi áp dụng. Nếu trùng tên mà có thành vấn đề thì chả lẽ phải viết lại class?

Bạn ghi 3 cái class modules này:

Class module Test1:
Public Sub MethodA()
MsgBox "MethodA trong Test_1"
End Sub

Class module Test2:
Public Sub MethodA()
MsgBox "MethodA trong Test_2"
End Sub

Class module Test3:
Private x As String
Sub MethodA()
MsgBox "tri cua x: " & x
End Sub
Sub GanTriX(ByVal tri As String)
x = tri
End Sub

Xong, ghi cái này vào Module1:

Sub t()

' test 1 variables, 2 objects of different classes
' 1 biến, khởi đầu là 1 class, sau đó đổi thành class khác
Dim obj As Object
Set obj = New Test1
obj.MethodA
Set obj = New Test2
obj.MethodA

' test two variables, two objects of same class
' 2 biến khác nhau, cùng 1 class
Dim obj1 As Object, obj2 As Object
Set obj1 = New Test3
Set obj2 = New Test3 ' same class, different object
obj1.GanTriX "The First"
obj2.GanTriX "The Second"
obj1.MethodA
obj2.MethodA

' array elements
' mảng 2 phần tử, mỗi phần tử là 1 đối tượng, cùng class
Dim objA(1 To 2) As Object
For i = 1 To 2
Set objA(i) = New Test3
objA(i).GanTriX "Element number " & i
Next

For i = 1 To 2
objA(i).MethodA
Next

End Sub
 
Upvote 0
Tên sub trùng hay khong trùng chả thành vấn đề. Một trong những mục đích của class là để tách rời code khi áp dụng. Nếu trùng tên mà có thành vấn đề thì chả lẽ phải viết lại class?

Bạn ghi 3 cái class modules này:

Class module Test1:
Public Sub MethodA()
MsgBox "MethodA trong Test_1"
End Sub

Class module Test2:
Public Sub MethodA()
MsgBox "MethodA trong Test_2"
End Sub

Class module Test3:
Private x As String
Sub MethodA()
MsgBox "tri cua x: " & x
End Sub
Sub GanTriX(ByVal tri As String)
x = tri
End Sub

Xong, ghi cái này vào Module1:

Sub t()

' test 1 variables, 2 objects of different classes
' 1 biến, khởi đầu là 1 class, sau đó đổi thành class khác
Dim obj As Object
Set obj = New Test1
obj.MethodA
Set obj = New Test2
obj.MethodA

' test two variables, two objects of same class
' 2 biến khác nhau, cùng 1 class
Dim obj1 As Object, obj2 As Object
Set obj1 = New Test3
Set obj2 = New Test3 ' same class, different object
obj1.GanTriX "The First"
obj2.GanTriX "The Second"
obj1.MethodA
obj2.MethodA

' array elements
' mảng 2 phần tử, mỗi phần tử là 1 đối tượng, cùng class
Dim objA(1 To 2) As Object
For i = 1 To 2
Set objA(i) = New Test3
objA(i).GanTriX "Element number " & i
Next

For i = 1 To 2
objA(i).MethodA
Next

End Sub
Test thử thấy nó báo lỗi Sub Thứ 2 Trong Class (Hình kèm theo)
Đã test lại OK ( Xin lỗi Bạn)
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    15.4 KB · Đọc: 125
Lần chỉnh sửa cuối:
Upvote 0
Bạn phải insert 3 cái Class chứ. sau bỏ chung vào 1 class được !
OK bạn đúng vậy....--=0--=0

cách viết bài #11 ok rồi đó nhưng để ứng dụng nó vào thực tế mình thấy khó
Ví dụ như mình có thể viết thành một Hàm tổng quát khi cần gọi một Sub nào trong Class là mình gọi thôi

VD: TenHam(Ten Sub Trong Class) ... như vậy ứng dụng nó sẽ dễ ràng hơn
 
Lần chỉnh sửa cuối:
Upvote 0
code trong Class
Mã:
Private hoten As String
Private Diemso As Double


Public Sub SETTT(Ten As String, diem As Double)
hoten = Ten
Diemso = diem
End Sub


Public Sub GETTT()
MsgBox hoten
MsgBox Diemso
End Sub

code trong Module
Mã:
Sub TEST()
Dim OBJ As Object
   Set OBJ = New Class2
   Call OBJ.SETTT("Ho Ngoc Phi", 10)
   Call OBJ.GETTT
End Sub
thử code này xem sao, xem có sáng kiến nào không?
 
Upvote 0
OK bạn đúng vậy....--=0--=0

cách viết bài #11 ok rồi đó nhưng để ứng dụng nó vào thực tế mình thấy khó
Ví dụ như mình có thể viết thành một Hàm tổng quát khi cần gọi một Sub nào trong Class là mình gọi thôi

VD: TenHam(Ten Sub Trong Class) ... như vậy ứng dụng nó sẽ dễ ràng hơn

Tôi đang thắc mắc 1 việc: Không biết bạn có biết lý do cần thiết phải dùng class là gì không? Hay vì bạn thấy class nó "lạ lạ" nên muốn "thử" chơi vậy thôi?
Một trong những việc mà class có thể làm là: TẠO RA SỰ KIỆN NGƯỜI DÙNG. Bạn đã xem qua bài này chưa:
http://www.giaiphapexcel.com/forum/showthread.php?37075-Dùng-Class-Module-để-tạo-sự-kiện-người-dùng
???
Nếu đã xem thì tôi nghĩ đó là bài viết dạng cơ bản nhất (mức thấp nhất) để tiếp cận với class rồi còn gì
 
Upvote 0
Tôi đang thắc mắc 1 việc: Không biết bạn có biết lý do cần thiết phải dùng class là gì không? Hay vì bạn thấy class nó "lạ lạ" nên muốn "thử" chơi vậy thôi?
Một trong những việc mà class có thể làm là: TẠO RA SỰ KIỆN NGƯỜI DÙNG. Bạn đã xem qua bài này chưa:
http://www.giaiphapexcel.com/forum/showthread.php?37075-Dùng-Class-Module-để-tạo-sự-kiện-người-dùng
???
Nếu đã xem thì tôi nghĩ đó là bài viết dạng cơ bản nhất (mức thấp nhất) để tiếp cận với class rồi còn gì
Em đọc rồi và em cũng muốn tìm hiểu thêm có giải pháp nào mới hơn không đó Anh...

Tại vì Em viết trên VB6 thấy một cái Class Có nhiều code quá khó kiểm soát nên em chia ra nhiều Class trong mỗi Class lại có một sub hoặc 2 .. giống nhau ...vì nó trùng thừa nên Em mới tìm hiểu cách gọi Sub với các Class với nhau và từ Module sang Class ....để xóa bớt Sub trùng
vấn đề của Em đã giải quyết Ok rồi ...
Cuối cùng Em chọn cách ngắn gọn theo Bài #3
PHP:
Public Sub Test_MyClass()
With New MyClass ''MyClass = Ten ClassModule
    .Test_Class1 ''Test_Class1 = Ten Sub trong ClassModule
End With
End Sub
 
Upvote 0
code trong Class
Mã:
Private hoten As String
Private Diemso As Double


Public Sub SETTT(Ten As String, diem As Double)
hoten = Ten
Diemso = diem
End Sub


Public Sub GETTT()
MsgBox hoten
MsgBox Diemso
End Sub

code trong Module
Mã:
Sub TEST()
Dim OBJ As Object
   Set OBJ = New Class2
   Call OBJ.SETTT("Ho Ngoc Phi", 10)
   Call OBJ.GETTT
End Sub
thử code này xem sao, xem có sáng kiến nào không?
Ngắn gọn ứng dụng thực tế OK
Mình Xài chung dòng này Public OBJ As Object
 
Upvote 0
Class dùng làm vì vậy các anh? Ứng dụng cụ thể đi, chung chung thế này khó hiểu thật.
 
Upvote 0
Class dùng làm vì vậy các anh? Ứng dụng cụ thể đi, chung chung thế này khó hiểu thật.
Thì bạn Ngâm cứu từ bài #1 đến Bài #16 xong vào link Anh Ndu cho bài ở bài #16 đó ngâm cứu đi nha

Mình hỏi để ứng dụng lên Form trên File (*.dll - VB6) Bạn tải về quậy chơi nha

Chạy File Install_TestClass.bat để sử dung
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thì bạn Ngâm cứu từ bài #1 đến Bài #16 xong vào link Anh Ndu cho bài ở bài #16 đó ngâm cứu đi nha

Mình hỏi để ứng dụng lên Form trên File (*.dll - VB6) Bạn tải về quậy chơi nha

Chạy File Install_TestClass.bat để sử dung

Bạn nói rõ tác dụng hay chức năng của code này không? vì cài DLL lạ sợ, và vì phần mềm diệt virus luôn báo không an toàn với các DLL giống thế này...

Ứng dụng vào form như ndu trên thì nó là form nút tôi lại không rành kiểu vba thế , tôi muốn hỏi về ứng dụng thực tế vào bài thực tế, vấn đề thực tế...
 
Upvote 0
Bạn nói rõ tác dụng hay chức năng của code này không? vì cài DLL lạ sợ, và vì phần mềm diệt virus luôn báo không an toàn với các DLL giống thế này...

Ứng dụng vào form như ndu trên thì nó là form nút tôi lại không rành kiểu vba thế , tôi muốn hỏi về ứng dụng thực tế vào bài thực tế, vấn đề thực tế...
Thì chạy File *.bat thử test coi cái Form mình làm trong File *dll đó... không có Virus đâu mà sợ....
 
Upvote 0
Thì bạn Ngâm cứu từ bài #1 đến Bài #16 xong vào link Anh Ndu cho bài ở bài #16 đó ngâm cứu đi nha

Mình hỏi để ứng dụng lên Form trên File (*.dll - VB6) Bạn tải về quậy chơi nha

Chạy File Install_TestClass.bat để sử dung
Bác ơi mình sử dụng nó báo lỗi thế này.
Hinh.jpg
Mặc dù đã đăng ký DLL rồi (Mình sử dụng Windows 8.1, Office 2013 32Bit)
 
Upvote 0
Tôi Win 10 - office 2016 64bit cũng bị lỗi như giải pháp. Phải chăng có cần tick gì trong References không? Thiếu thư viện gì đó chăng???
Mình ko cũng biết nữa ....từ sáng đến giờ mình cài cái máy ảo Win8.1 test thấy cũng lỗi vậy luôn...+-+-+-++-+-+-++-+-+-+
 
Lần chỉnh sửa cuối:
Upvote 0
Mới thử rồi vẫn vậy ....+-+-+-+
Win7 & Ex2010 cũng lỗi luôn bạn ơi, còn vụ này là sao vậy? Kakaka:

;Ban nen copy BanSoDep.dll vao trong thu muc C:\Windows\System32

Trong cái TestClass có đoạn:

C : \ U s e r s \ K i e u M a n h \ D e s k t o p \ N e w f o l d e r \ T e s t C l a s s . v b p
 
Lần chỉnh sửa cuối:
Upvote 0
Thử trong VBA Tool > Reference > check vào Microsoft Scripting Runtime xem sao. (chưa tải về nên chưa thử)
Mình Mới Test Lại OK Rồi ... chạy File *.bat đó không được đâu mà phải kéo UAC xuống xong khởi động lại máy ....Chạy Tools For Office And Software mình úp lên là Ok

Lưu ý khi chạy Tools For Office And Software là chạy Run as Administrator xong chọn File *dll đó rồi nhấn Register là Ok. Nếu hủy nhấn UnRegister

Mới Test trên máy ảo Win8.1 .... OK
 

File đính kèm

Upvote 0
Win7 & Ex2010 cũng lỗi luôn bạn ơi, còn vụ này là sao vậy? Kakaka:

;Ban nen copy BanSoDep.dll vao trong thu muc C:\Windows\System32

Trong cái TestClass có đoạn:

C : \ U s e r s \ K i e u M a n h \ D e s k t o p \ N e w f o l d e r \ T e s t C l a s s . v b p

dòng màu đỏ như là ghi chú thôi Bạn
Nghĩa đọc File *dll bằng cái gì mà có dòng sau ta

C : \ U s e r s \ K i e u M a n h \ D e s k t o p \ N e w f o l d e r \ T e s t C l a s s . v b p
 
Lần chỉnh sửa cuối:
Upvote 0
Qua cái File *dll đó nếu Bạn nào muốn bảo mật Excel thì nên ta nên Viết trên *dll và tạo Form đăng ký luôn trong *dll như mình đã từng úp trên GPE .... nếu trong đó có quá nhiều code ta chia ra nhiều Class hay Module và thực hiện gọi sub giữa các Class với nhau và Module như vậy rất tiện

Cơ bản chống háck là kỷ thuật và thuật toán của từng Bạn .... mình đã từng Bị Bạn hau1978 Pacth thành công File *dll ...khi đó kỷ thuật viết code của mình còn kém ....

Muốn không cho dùng Auly Debug.Print từng dòng code là viết code hàm hay sub truyền các tham số cho nhau và không dùng If ... Elseif ... nếu có dùng thì If then ....cho những đoạn code quan trọng ... như vậy nó sẻ không chặn được từng dòng code mà nhảy tới dòng kế tiếp...

Xin chia sẻ vài ý với các Bạn vậy....
 
Lần chỉnh sửa cuối:
Upvote 0
Nghĩa dùng Tools nào đọc vậy ( dòng đó không có trong *dll)...

Bạn Test lại ok chưa....
Có những thứ nó đem theo thông tin của mình vào trong công cụ của mình luôn đó! Nên đôi lúc "bí mật quốc gia" bị "rò rỉ" hehehehe. -=09=
 
Upvote 0
Sao VBA còn bảo mật làm gì KM ơi, vì diễn đàn là mở cho mọi người xem, giúp mọi người

VBA thì code bản thân nó là mở, nghĩ gì đóng nữa

Còn nếu đã dùng DLL thì viết luôn ứng dụng bên VB luôn đâu cần bảo mật thuật toán???

Còn DLL sẽ mang theo nhiều thông tin, xem nó cũng biết bạn dùng VB gì, nằm ở thư mục gì, project bạn đặt tên gì ở đâu...vv
 
Upvote 0
Sao VBA còn bảo mật làm gì KM ơi, vì diễn đàn là mở cho mọi người xem, giúp mọi người

VBA thì code bản thân nó là mở, nghĩ gì đóng nữa

Còn nếu đã dùng DLL thì viết luôn ứng dụng bên VB luôn đâu cần bảo mật thuật toán???

Còn DLL sẽ mang theo nhiều thông tin, xem nó cũng biết bạn dùng VB gì, nằm ở thư mục gì, project bạn đặt tên gì ở đâu...vv
Vậy thì bạn qua link sau thử xem cách Bảo mật code VBA nha....thử coi xem code trong *dll viết gì và xin mời hack thử xem.....
Còn dòng màu đỏ biết cũng không giải quyết gì cả Bạn...

http://www.giaiphapexcel.com/forum/...Qua-Internet-cho-File-Excel-Code-VBA&p=688924
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy thì bạn qua link sau thử xem cách Bảo mật code VBA nha....thử coi xem code trong *dll viết gì và xin mời hack thử xem.....
Còn dòng màu đỏ biết cũng không giải quyết gì cả Bạn...

http://www.giaiphapexcel.com/forum/...Qua-Internet-cho-File-Excel-Code-VBA&p=688924

Rất tiếc, tôi không có thói quen hack thế, và có gì trong đó đáng giá đâu mà hack thậm chí cả kho GPE này còn chẳng có gì đáng giá, huống hồ thử....
 
Upvote 0
Rất tiếc, tôi không có thói quen hack thế, và có gì trong đó đáng giá đâu mà hack thậm chí cả kho GPE này còn chẳng có gì đáng giá, huống hồ thử....
Vấn đề ở đây không phải đáng giá hay không đáng giá ... mà khi ta viết một ứng dụng nào đó cần bảo mật thì cách tốt nhất ta đem nó ra thử sức ...

VD chương trình diệt virus thì phải mang ra diệt virus xem khả năng của nó tới đâu thôi chư cứ nói diệt tốt mà chạy thấy virus bỏ qua thì làm gì nữa

Vấn đề này nên hiểu đơn giản là mang ra thử lửa vậy thôi .....còn những gì không liên quan đến đề tài này xin các bạn không Bàn luận...
xin cảm ơn
 
Upvote 0
...
Tại vì Em viết trên VB6 thấy một cái Class Có nhiều code quá khó kiểm soát nên em chia ra nhiều Class trong mỗi Class lại có một sub hoặc 2 .. giống nhau ...vì nó trùng thừa nên Em mới tìm hiểu cách gọi Sub với các Class với nhau và từ Module sang Class ....để xóa bớt Sub trùng
...

Tôi không rõ bạn muốn làm gì. Nhưng làm như thế này là đi ngược lại nguyên tắc lập trình hướng đối tượng.
Theo đúng luật, bạn không cần kiểm soát code của class. Tức là không cần biết nó được viết ra sao. Chỉ cần biết nó làm gì, dựa vào cái giao diện của nó (các thuộc tính/hàm/phương thức public) mà dựng đối tượng sử dụng nó.

code trong Class
Mã:
Private hoten As String
Private Diemso As Double


Public Sub [COLOR=#FF0000]SETTT[/COLOR](Ten As String, diem As Double)
hoten = Ten
Diemso = diem
End Sub


Public Sub [COLOR=#FF0000]GETTT[/COLOR]()
MsgBox hoten
MsgBox Diemso
End Sub

code trong Module
Mã:
Sub TEST()
Dim OBJ As Object
   Set OBJ = New Class2
   Call OBJ.SETTT("Ho Ngoc Phi", 10)
   Call OBJ.GETTT
End Sub
thử code này xem sao, xem có sáng kiến nào không?

Sáng kiến thì khong dám. Chỉ thấy bạn dùng GET/SET nên nghĩ có lẽ bạn muốn dùng accessors. Nếu vậy thì VBA có cách cổ điển của nó là dùng Property Get và Property Let.
Nếu cả Get (read/truy) và Let (write/gán) đều là public thì property (thuộc tính) ấy read-write, nếu Let private thì thuộc tính ReadOnly, nếu Get private thì thuộc tính WriteOnly
 
Lần chỉnh sửa cuối:
Upvote 0
Qua cái File *dll đó nếu Bạn nào muốn bảo mật Excel thì nên ta nên Viết trên *dll và tạo Form đăng ký luôn trong *dll như mình đã từng úp trên GPE .... nếu trong đó có quá nhiều code ta chia ra nhiều Class hay Module và thực hiện gọi sub giữa các Class với nhau và Module như vậy rất tiện

Cơ bản chống háck là kỷ thuật và thuật toán của từng Bạn .... mình đã từng Bị Bạn hau1978 Pacth thành công File *dll ...khi đó kỷ thuật viết code của mình còn kém ....

Muốn không cho dùng Auly Debug.Print từng dòng code là viết code hàm hay sub truyền các tham số cho nhau và không dùng If ... Elseif ... nếu có dùng thì If then ....cho những đoạn code quan trọng ... như vậy nó sẻ không chặn được từng dòng code mà nhảy tới dòng kế tiếp...

Xin chia sẻ vài ý với các Bạn vậy....

Nghe có vẻ cao siêu quá nhỉ. Tôi không biết hack nhưng có bảo mật bằng DLL, bạn thử hack file ở đây xem có được không.
http://www.giaiphapexcel.com/forum/...ể-thức-đấu-loại-trực-tiếp&p=690696#post690696
 
Upvote 0
Nghe có vẻ cao siêu quá nhỉ. Tôi không biết hack nhưng có bảo mật bằng DLL, bạn thử hack file ở đây xem có được không.
http://www.giaiphapexcel.com/forum/...ể-thức-đấu-loại-trực-tiếp&p=690696#post690696
Cách viết của Bạn mã hóa sợ quá ...mở File Excel lên coi code thấy là hết hồn rồi...-\\/.
1/ đầu tiên chạy File Giai dau moi.xlsm nó sẽ kiểm tra xem

trong "C:\Windows\System32\LTD_TT.dll" có File LTD_TT.dll Chưa nếu chưa Có thì In ra một File RegDLL.bat copy File LTD_TT.dll Vào C:\Windows\System32\LTD_TT.dll và đăng ký nó xong Kill RegDLL.bat

2/ Trong LTD_TT.dll Bạn xài một cái Form tên Fm_Registration dùng làm Form đăng Ký...

3/ Xài một hàm lấy CPUID máy tính Và Environ("COMPUTERNAME")

X
ong dùng công Cụ CreateObject("VBScript.RegExp", 0)

Mã hóa Chuỗi Len("hOFsoejfdgNaWxrP7Z8UJG5w9qvuCRY3lp6nI4bcLm0QK2i1TBHkAEMVStyDXz")

xong Ghép Hai chuỗi sau lại
"zpxXVC35rNiZaROKFJvhTGb4o8Bjk1s" & StrReverse("Q9PMHL2mc0wIlDEqfndYU7eygAtSWu6")
..................
..................
.................... Nói chung đau đầu Chịu Thua +-+-+-+.........Trình độ viết code của Bạn Quá cao ....}}}}}
 
Lần chỉnh sửa cuối:
Upvote 0
Cách viết của Bạn mã hóa sợ quá ...mở File Excel lên coi code thấy là hết hồn rồi...-\\/.
1/ đầu tiên chạy File Giai dau moi.xlsm nó sẽ kiểm tra xem

trong "C:\Windows\System32\LTD_TT.dll" có File LTD_TT.dll Chưa nếu chưa Có thì In ra một File RegDLL.bat copy File LTD_TT.dll Vào C:\Windows\System32\LTD_TT.dll và đăng ký nó xong Kill RegDLL.bat

2/ Trong LTD_TT.dll Bạn xài một cái Form tên Fm_Registration dùng làm Form đăng Ký...

3/ Xài một hàm lấy CPUID máy tính Và Environ("COMPUTERNAME")

X
ong dùng công Cụ CreateObject("VBScript.RegExp", 0)

Mã hóa Chuỗi Len("hOFsoejfdgNaWxrP7Z8UJG5w9qvuCRY3lp6nI4bcLm0QK2i1TBHkAEMVStyDXz")

xong Ghép Hai chuỗi sau lại
"zpxXVC35rNiZaROKFJvhTGb4o8Bjk1s" & StrReverse("Q9PMHL2mc0wIlDEqfndYU7eygAtSWu6")
..................
..................
.................... Nói chung đau đầu Chịu Thua +-+-+-+.........Trình độ viết code của Bạn Quá cao ....}}}}}
Ghê thiệt, biên dịch thành DLL rồi mà vẫn đọc được.
Rút kinh nghiệm lần sau mã hóa code file DLL giống như Excel luôn.
 
Upvote 0
Code trong file excel nhìn cũng "bá đạo".
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    79.5 KB · Đọc: 111
Upvote 0
Tôi không rõ bạn muốn làm gì. Nhưng làm như thế này là đi ngược lại nguyên tắc lập trình hướng đối tượng.
Theo đúng luật, bạn không cần kiểm soát code của class. Tức là không cần biết nó được viết ra sao. Chỉ cần biết nó làm gì, dựa vào cái giao diện của nó (các thuộc tính/hàm/phương thức public) mà dựng đối tượng sử dụng nó.



Sáng kiến thì khong dám. Chỉ thấy bạn dùng GET/SET nên nghĩ có lẽ bạn muốn dùng accessors. Nếu vậy thì VBA có cách cổ điển của nó là dùng Property Get và Property Let.
Nếu cả Get (read/truy) và Let (write/gán) đều là public thì property (thuộc tính) ấy read-write, nếu Let private thì thuộc tính ReadOnly, nếu Get private thì thuộc tính WriteOnly
Quay lại với đề tài này..
Mình có được học hành lập trình trường lớp nào đâu lên GPE tải file về quậy chơi diết rồi ngộ ra code thôi mà...Nhưng mình viết như vậy thấy nó vẫn chạy tốt và giúp mình xóa bớt mấy sub trùng đi cho nó gọn mà ....không biết nó có ảnh hưởng gì chung trong tổng thể code ....+-+-+-++-+-+-+
Cảm ơn Bạn
 
Upvote 0
Quay lại với đề tài này..
Mình có được học hành lập trình trường lớp nào đâu lên GPE tải file về quậy chơi diết rồi ngộ ra code thôi mà...Nhưng mình viết như vậy thấy nó vẫn chạy tốt và giúp mình xóa bớt mấy sub trùng đi cho nó gọn mà ....không biết nó có ảnh hưởng gì chung trong tổng thể code ....+-+-+-++-+-+-+
Cảm ơn Bạn
Lập trình hướng đối tượng cứ hiểu nôn na như thế này, người ta viết ra 1 đối tượng nào, người ta muốn che dấu tất cả các các thuộc tính và phương thức, mình chỉ biết xài thôi, ví dụ rõ nhất trong vba
đối tượng Range, mình đâu biết bên trong nó làm cái gì đâu nè, mà mình vẫn xài được, Range("").phương thức, Range("").thuộc tính, Kiều mạnh thử dùng công cụ nào đó mổ sẻ ra coi thằng đối tượng Range nó có những cái gì?
 
Upvote 0
Lập trình hướng đối tượng cứ hiểu nôn na như thế này, người ta viết ra 1 đối tượng nào, người ta muốn che dấu tất cả các các thuộc tính và phương thức, mình chỉ biết xài thôi, ví dụ rõ nhất trong vba
đối tượng Range, mình đâu biết bên trong nó làm cái gì đâu nè, mà mình vẫn xài được, Range("").phương thức, Range("").thuộc tính, Kiều mạnh thử dùng công cụ nào đó mổ sẻ ra coi thằng đối tượng Range nó có những cái gì?

Quan trọng là: lập trình hướng đối tượng là thay đổi hoàn toàn phương pháp tư duy lập trình (về vĩ mô) khi giải quyết vấn đề thực tế.
 
Upvote 0
Lập trình hướng đối tượng cứ hiểu nôn na như thế này, người ta viết ra 1 đối tượng nào, người ta muốn che dấu tất cả các các thuộc tính và phương thức, mình chỉ biết xài thôi, ví dụ rõ nhất trong vba
đối tượng Range, mình đâu biết bên trong nó làm cái gì đâu nè, mà mình vẫn xài được, Range("").phương thức, Range("").thuộc tính, Kiều mạnh thử dùng công cụ nào đó mổ sẻ ra coi thằng đối tượng Range nó có những cái gì?

Cái chỗ đỏ đỏ nó không hẳn đúng.
Người viết không che dấu. Chỉ chính cái class nó che lại.
Theo nguyên tắc, các phần Public là phần class đưa ra cho sử dụng, các phần Private là các phần nó không đưa ra. Từ "che giấu" có nghĩa là các code khác ngoài class không chạm vào được (không thể truy cập, gọi được).

Khi bạn mua một cái máy tính, hãng sản xuất có cho biết rõ chi tiết hầu hết các cơ phận. Đó không phải là một ví dụ tốt của class.
Ví dụ tốt hơn là cái TV. Nhà sản xuất TV chỉ bảo đảm một số điều, chỗ còn lại bạn không cần biết tới. Bạn vẫn có quyền mở ra xem các cơ phận. Hãng sản xuất chỉ không bảo đảm là chúng luôn như thế. Khi bạn phàn nàn tại sao cùng một kiểu TV mà cái biến thế của bạn không cùng thương hiệu với cái của anh X thì họ sẽ trả lời:
- Theo đúng điều lệ quảng cáo, chúng tôi chỉ bảo đảm những cái bạn thấy và sử dụng thôi. Phần thiết kế bên trong, chúng tôi có toàn quyền thay đổi.

Chỗ màu xanh chỉ đúng đối với các phần mềm bản quyền. Đối với phần mềm mã nguồn mở, bạn vẫn có thể xem và sửa bên trong chúng.
 
Upvote 0
Tên sub trùng hay khong trùng chả thành vấn đề. Một trong những mục đích của class là để tách rời code khi áp dụng. Nếu trùng tên mà có thành vấn đề thì chả lẽ phải viết lại class?

Bạn ghi 3 cái class modules này:

Class module Test1:
Public Sub MethodA()
MsgBox "MethodA trong Test_1"
End Sub

Class module Test2:
Public Sub MethodA()
MsgBox "MethodA trong Test_2"
End Sub

Class module Test3:
Private x As String
Sub MethodA()
MsgBox "tri cua x: " & x
End Sub
Sub GanTriX(ByVal tri As String)
x = tri
End Sub

Xong, ghi cái này vào Module1:

Sub t()

' test 1 variables, 2 objects of different classes
' 1 biến, khởi đầu là 1 class, sau đó đổi thành class khác
Dim obj As Object
Set obj = New Test1
obj.MethodA
Set obj = New Test2
obj.MethodA

' test two variables, two objects of same class
' 2 biến khác nhau, cùng 1 class
Dim obj1 As Object, obj2 As Object
Set obj1 = New Test3
Set obj2 = New Test3 ' same class, different object
obj1.GanTriX "The First"
obj2.GanTriX "The Second"
obj1.MethodA
obj2.MethodA

' array elements
' mảng 2 phần tử, mỗi phần tử là 1 đối tượng, cùng class
Dim objA(1 To 2) As Object
For i = 1 To 2
Set objA(i) = New Test3
objA(i).GanTriX "Element number " & i
Next

For i = 1 To 2
objA(i).MethodA
Next

End Sub
Anh ơi cho e hỏi là dòng
"Sub GanTriX(ByVal tri As String)
x = tri
End Sub"
thì chữ "GanTriX" nó là tên sub hay là biến ạ..
vì e thử tạo trong module sub này thì nhấn f5 ko chạy... nhưng khi thông qua dòng sub này trong module:
Dim obj1 As Object, obj2 As Object
Set obj1 = New Test3
Set obj2 = New Test3 ' same class, different object
obj1.GanTriX "The First"
obj2.GanTriX "The Second"
thì GanTriX lại chạy như 1 sub ( ý là theo từng bước : đầu tiên là nhận giá trị "The first" sau đó thì cho nó và biến "x")
và 1 điều nữa tại sao mọi sub trong class module lại ko cho chạy mà chỉ cho gọi đc từ module thông qua 1 object ạ.. hay chỉ là do mặc định vba đã vậy rồi ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Anh ơi cho e hỏi là dòng
"Sub GanTriX(ByVal tri As String)
x = tri
End Sub"
thì chữ "GanTriX" nó là tên sub hay là biến ạ..
vì e thử tạo trong module sub này thì nhấn f5 ko chạy... nhưng khi thông qua dòng sub này trong module:
Dim obj1 As Object, obj2 As Object
Set obj1 = New Test3
Set obj2 = New Test3 ' same class, different object
obj1.GanTriX "The First"
obj2.GanTriX "The Second"
thì GanTriX lại chạy như 1 sub ( ý là theo từng bước : đầu tiên là nhận giá trị "The first" sau đó thì cho nó và biến "x")
và 1 điều nữa tại sao mọi sub trong class module lại ko cho chạy mà chỉ cho gọi đc từ module thông qua 1 object ạ.. hay chỉ là do mặc định vba đã vậy rồi ạ

Theo như câu hỏi của bạn thì bạn đừng nên rớ vô mấy cái class này, coi chừng "tẩu hoả nhập ma"... :) .
Học và hiểu cách tạo các thủ tục (Sub) và hàm (Function) trong standard module trước cho rành rồi hẳn nhảy vô ngâm cứu class.
 
Upvote 0
Theo như câu hỏi của bạn thì bạn đừng nên rớ vô mấy cái class này, coi chừng "tẩu hoả nhập ma"... :) .
Học và hiểu cách tạo các thủ tục (Sub) và hàm (Function) trong standard module trước cho rành rồi hẳn nhảy vô ngâm cứu class.
bạn ơi bạn có link để học thêm các cách viết sub với hàm ko.. vì trong sách vba chỉ có cách viết cơ bản thôi!
cảm ơn :)
 
Upvote 0
bạn ơi bạn có link để học thêm các cách viết sub với hàm ko.. vì trong sách vba chỉ có cách viết cơ bản thôi!
cảm ơn :)
Sách nào? Nếu là sách phổ biến của diễn đàn này thì có tên tác giả ấy, cứ hỏi thẳng tác giả thôi.

Muốn học trên cách viết cơ bản chỉ có 2 cách:
1. thực tập rất rất là nhiều. Mỗi lần vướng víu thì chịu khó bỏ ra 4 tiếng đồng hồ tự debug và tìm hiểu. Nếu sau thới gian ấy mà vẫn bí thì lên đây hỏi.
2. học căn bản lập trình. Trong môn căn bản lập trình sẽ dạy rất kỹ lưỡng về cấu trúc các chương trình con, tức là Sub và Function.
 
Upvote 0
bạn ơi bạn có link để học thêm các cách viết sub với hàm ko.. vì trong sách vba chỉ có cách viết cơ bản thôi!
cảm ơn :)

Tôi nhớ là có bạn Hesanbi có chia sẽ thêm mấy tài liệu về VBA đó, bạn kiếm lại đi. Đính kèm là một trong các tài liệu ấy.
Cách tôi học VBA là tôi tự đưa ra một cái ứng dụng liên quan đến công việc mình làm và bắt đầu tìm hiểu, viết code cho từng nghiệp vụ cụ thể đó. Khi đó bạn đã có mục tiêu thì việc học sẽ dễ hơn chứ không lang mang, mông lung.
 

File đính kèm

Upvote 0
Sách nào? Nếu là sách phổ biến của diễn đàn này thì có tên tác giả ấy, cứ hỏi thẳng tác giả thôi.

Muốn học trên cách viết cơ bản chỉ có 2 cách:
1. thực tập rất rất là nhiều. Mỗi lần vướng víu thì chịu khó bỏ ra 4 tiếng đồng hồ tự debug và tìm hiểu. Nếu sau thới gian ấy mà vẫn bí thì lên đây hỏi.
2. học căn bản lập trình. Trong môn căn bản lập trình sẽ dạy rất kỹ lưỡng về cấu trúc các chương trình con, tức là Sub và Function.
Tôi nhớ là có bạn Hesanbi có chia sẽ thêm mấy tài liệu về VBA đó, bạn kiếm lại đi. Đính kèm là một trong các tài liệu ấy.
Cách tôi học VBA là tôi tự đưa ra một cái ứng dụng liên quan đến công việc mình làm và bắt đầu tìm hiểu, viết code cho từng nghiệp vụ cụ thể đó. Khi đó bạn đã có mục tiêu thì việc học sẽ dễ hơn chứ không lang mang, mông lung.
cảm ơn bạn rất nhiều !trước đó thì mình cũng dự tính vậy .. mà sau khi xem sách phần cơ bản( vì chưa thấy phần nâng cao.) thì thấy trình còn yếu quá nên lên diễn đàn thông qua đó học hỏi và rèn luyện code cho nhớ .. rồi xem các thắc mắc của các ban đăng lên rồi vào xem coi giải quyết đc ko.. đồng thời coi cách các bạn khác viết code luôn :) .. Nói chung qua diễn đàn mình học hỏi đc rất nhiều
 
Upvote 0
Thì sub và function là cơ bản nhất rồi , còn nếu thấy vậy thì nên thay sách
trong sách mình coi của thầy Hướng phần cơ bản( mình down pdf trên mạng): thì các viết sub tương tự như dùng record macro
là sub -> tên -> sau đó muốn khai báo biến thì dùng dim.. chứ kho có cách viết - sub -> ten-> khai báo biến trong dấu () luôn :)
 
Upvote 0
trong sách mình coi của thầy Hướng phần cơ bản( mình down pdf trên mạng): thì các viết sub tương tự như dùng record macro
là sub -> tên -> sau đó muốn khai báo biến thì dùng dim.. chứ kho có cách viết - sub -> ten-> khai báo biến trong dấu () luôn :)
Từ khoá để tìm: "tầm vực", "tầm vực của biến", "tham biến", "tham trị"
Tìm ở đây cũng có mà trong sách cũng có.

Từ khoá khác cần thực hành: "trong câu hỏi, tránh viết tắt"
Trong lập tình có nhiều từ viết tắt rồi. Đọc tiếng Việt cũng bắt đoán từ viết tắt nữa sao?
 
Upvote 0
trong sách mình coi của thầy Hướng phần cơ bản( mình down pdf trên mạng): thì các viết sub tương tự như dùng record macro
là sub -> tên -> sau đó muốn khai báo biến thì dùng dim.. chứ kho có cách viết - sub -> ten-> khai báo biến trong dấu () luôn :)
Thế thì chưa tìm đúng sách, nên tìm kiếm sách đầy đủ, sách khác
 
Upvote 0
Thế thì chưa tìm đúng sách, nên tìm kiếm sách đầy đủ, sách khác
Bản thân tôi thì không dám nói thế, trước khi có xác nhận từ chính tác giả.
Là người có kinh nghiệm trong nghề giáo, tôi gặp không ít trường hợp học trò học không thuộc bài rồi đổ cho Thầy/Cô.
 
Upvote 0
Bản thân tôi thì không dám nói thế, trước khi có xác nhận từ chính tác giả.
Là người có kinh nghiệm trong nghề giáo, tôi gặp không ít trường hợp học trò học không thuộc bài rồi đổ cho Thầy/Cô.
Có thể người tìm bản pdf - là bản không đầy đủ, nên mới khuyên bạn ấy nên tìm: sách đầy đủ, sách khác
 
Upvote 0
Có thể người tìm bản pdf - là bản không đầy đủ, nên mới khuyên bạn ấy nên tìm: sách đầy đủ, sách khác
Thì ở trên tôi đã mách cho từ khoá để tìm.
Tôi đoán biết bạn này học bài theo kiểu lướt sơ qua mỗi phút 1 trang. Với kiểu lướt này thì có 10 quyển sách trong tay cũng tìm không thấy chủ đề cần hiểu.

Chú: trình độ của tôi đọc mỗi trang tối thiểu 5 phút. Lúc tôi đọc tài liệu kỹ thuật thì tôi luôn đặt bên cạnh một quyển sổ nháp. Trung bình mỗi trang tôi ghi lại trên sổ nháp 2 từ khoá, hoặc câu. Nếu tôi đọc trên mạng thì trung bình 4-5 trang tôi bookmark một cái để rảnh đọc lại. Khoảng vài tuần tôi mới dọn bớt bookmarks.
 
Upvote 0
Thì ở trên tôi đã mách cho từ khoá để tìm.
Tôi đoán biết bạn này học bài theo kiểu lướt sơ qua mỗi phút 1 trang. Với kiểu lướt này thì có 10 quyển sách trong tay cũng tìm không thấy chủ đề cần hiểu.

Chú: trình độ của tôi đọc mỗi trang tối thiểu 5 phút. Lúc tôi đọc tài liệu kỹ thuật thì tôi luôn đặt bên cạnh một quyển sổ nháp. Trung bình mỗi trang tôi ghi lại trên sổ nháp 2 từ khoá, hoặc câu. Nếu tôi đọc trên mạng thì trung bình 4-5 trang tôi bookmark một cái để rảnh đọc lại. Khoảng vài tuần tôi mới dọn bớt bookmarks.
hi hi bấc siêu cao thủ mà
 
Upvote 0
Thì ở trên tôi đã mách cho từ khoá để tìm.
Tôi đoán biết bạn này học bài theo kiểu lướt sơ qua mỗi phút 1 trang. Với kiểu lướt này thì có 10 quyển sách trong tay cũng tìm không thấy chủ đề cần hiểu.

Chú: trình độ của tôi đọc mỗi trang tối thiểu 5 phút. Lúc tôi đọc tài liệu kỹ thuật thì tôi luôn đặt bên cạnh một quyển sổ nháp. Trung bình mỗi trang tôi ghi lại trên sổ nháp 2 từ khoá, hoặc câu. Nếu tôi đọc trên mạng thì trung bình 4-5 trang tôi bookmark một cái để rảnh đọc lại. Khoảng vài tuần tôi mới dọn bớt bookmarks.
Thật sự thì muốn đọc 1 phút 1 trang thì chỉ có thể là biết tuốt thôi.. e cũng muốn đạt đến trình đó
Các bác xem giúp e xem sách này có đầy đủ không.. vì kích thước nó 40mb nên e xin phép đc up link
Bài đã được tự động gộp:

Có thể người tìm bản pdf - là bản không đầy đủ, nên mới khuyên bạn ấy nên tìm: sách đầy đủ, sách khác
bác xem giúp e sách này có đầy đủ chưa với :) để e nhắm mua cuốn đầy đủ cho rồi.. hehe
 
Upvote 0
Bạn chio biết quyển sách ây có bao nhiêu trang. Và bạn mất bao lâu để học xong quyển ấy.
Nếu nó trên 150 trang và bạn bỏ ra dưới 3 tuần lễ thì về học lại đi.

Quyển sách 150-200 trang:
Học trong vòng 1 tuần lễ -> hạng thông minh (trình độ trí tuệ cao hơn tôi nhiều)
Học trong vòng 3 tuần lễ -> hạng khá (trình độ trí tuệ hơi cao hơn hoặc ngang tôi)
Học trên 3 tuần lễ -> hạng trung bình (trình độ này thì học cái gì cũng cần phải cố gắng nhiều)
Học trên 8 tuần lễ -> hạng kém, hặc quá biếng nhác (không nên học lập trình nữa)
 
Upvote 0
Sách thì có >100k mua đi ủng hộ người ta photo làm chi chữ lòe lẹt xong đóng file >PDF coi hỏng con mắt nhập viện chi phí tốn trên 1000 lần
 
Lần chỉnh sửa cuối:
Upvote 0
Sách thì có 100k mua đi ủng hộ người ta photo làm chi chữ lòe lẹt xong đóng file >PDF coi hỏng con mắt nhập viện chi phí tốn trên 1000 lần
Bản thân tôi thì khuyên ngừoi học dùng 2 loại sách:
1. sách học thì bỏ tiền mua. Bởi vì mình mất tiền sẽ có nhiều động lực để học cho kỹ. Vả lại dùng nhiều mà không trả tiền thì coi như lợi dụng lao động của tác giả.
2. sách tham khảo thì chùa. Mình chỉ đọc 1 vài chỗ hoặc tối đa 1 chương thì bỏ tiền hơi nặng.
(nếu phần tham khảo tương đương vài ba chương, cỡ 1/4 quyển sách trở lên thì coi như học)
 
Upvote 0
Mạnh thấy các bạn nào còn đam Excel thì nên bớt chút thời gian mà học VBA ...
Nếu thêm tí nữa thì vb6 (Viết COM rất tốt cho VBA)... tí nữa thì Delphi + abcdxyz
Vì có coi bài phân tích sau thì VBA nó còn phát tồn tại lâu đó
dễ nhất khi làm quen vba xong thì viết VB6 nó cũng gần như VBA thui ... khác 1 tẹo ( cái tẹo đó tự mò he )
Nói chung nhiều thứ lắm vấn đề là ta có thích + đam mê hay không và từ từ thong thả mà học
 
Upvote 0
Sách thì có >100k mua đi ủng hộ người ta photo làm chi chữ lòe lẹt xong đóng file >PDF coi hỏng con mắt nhập viện chi phí tốn trên 1000 lần
@kieu manh khi đến tuổi rồi thì mắt rất kém. không đọc được sách đâu, mà phải đọc trên máy thì mới nhìn mới rõ được. (Ví dụ thực tế như tôi chẳng hạn)
 
Upvote 0
@kieu manh khi đến tuổi rồi thì mắt rất kém. không đọc được sách đâu, mà phải đọc trên máy thì mới nhìn mới rõ được. (Ví dụ thực tế như tôi chẳng hạn)
Chủ quan đến thế này thì thua.
Mấy cửa hiệu bán kính lão phá sản hết.

Ví dụ thực tế: tuổi tôi chỉ thua 1-2 người ở đây. Lúc cần tham khảo, tôi vẫn đọc suốt một vài chương sách. Tiểu thuyết thì tôi đọc đều đặn.
Mà trên máy thì tôi cũng phải đeo kính lão. Có tránh được đâu.
 
Upvote 0
Chủ quan đến thế này thì thua.
Mấy cửa hiệu bán kính lão phá sản hết.

Ví dụ thực tế: tuổi tôi chỉ thua 1-2 người ở đây. Lúc cần tham khảo, tôi vẫn đọc suốt một vài chương sách. Tiểu thuyết thì tôi đọc đều đặn.
Mà trên máy thì tôi cũng phải đeo kính lão. Có tránh được đâu.
Thực sự là tôi bây giờ đọc sách không được (Kể cả có kính) nhất là đọc mấy tờ A4; A3 nhìn trên máy thì rõ hơn (Cái này chắc cũng do từng người)
 
Upvote 0
Mạnh thấy các bạn nào còn đam Excel thì nên bớt chút thời gian mà học VBA ...
Nếu thêm tí nữa thì vb6 (Viết COM rất tốt cho VBA)... tí nữa thì Delphi + abcdxyz
Vì có coi bài phân tích sau thì VBA nó còn phát tồn tại lâu đó
dễ nhất khi làm quen vba xong thì viết VB6 nó cũng gần như VBA thui ... khác 1 tẹo ( cái tẹo đó tự mò he )
Nói chung nhiều thứ lắm vấn đề là ta có thích + đam mê hay không và từ từ thong thả mà học
VB6 cũng dead (chết) dần rui

Thật sự thì muốn đọc 1 phút 1 trang thì chỉ có thể là biết tuốt thôi.. e cũng muốn đạt đến trình đó
Các bác xem giúp e xem sách này có đầy đủ không.. vì kích thước nó 40mb nên e xin phép đc up link
Bài đã được tự động gộp:


bác xem giúp e sách này có đầy đủ chưa với :) để e nhắm mua cuốn đầy đủ cho rồi.. hehe

Tôi không có nhu cầu xem sách kiểu link trôi nổi, bạn tự xem vậy
 
Upvote 0
Bạn chio biết quyển sách ây có bao nhiêu trang. Và bạn mất bao lâu để học xong quyển ấy.
Nếu nó trên 150 trang và bạn bỏ ra dưới 3 tuần lễ thì về học lại đi.

Quyển sách 150-200 trang:
Học trong vòng 1 tuần lễ -> hạng thông minh (trình độ trí tuệ cao hơn tôi nhiều)
Học trong vòng 3 tuần lễ -> hạng khá (trình độ trí tuệ hơi cao hơn hoặc ngang tôi)
Học trên 3 tuần lễ -> hạng trung bình (trình độ này thì học cái gì cũng cần phải cố gắng nhiều)
Học trên 8 tuần lễ -> hạng kém, hặc quá biếng nhác (không nên học lập trình nữa)
492 trang... mình vẫn chưa đọc xong...lý do chưa xong vì trước khi chưa thẩm thấu được hết những phần trước mình đã học ,, thì mình sẽ ko đọc tiếp.. vì nó thật vô ích và tốn thời gian ko hiểu thì sẽ ko thể nhớ đc... còn lại mấy phần dialogsheet , dll, liên kết file
 
Upvote 0
492 trang... mình vẫn chưa đọc xong...lý do chưa xong vì trước khi chưa thẩm thấu được hết những phần trước mình đã học ,, thì mình sẽ ko đọc tiếp.. vì nó thật vô ích và tốn thời gian ko hiểu thì sẽ ko thể nhớ đc... còn lại mấy phần dialogsheet , dll, liên kết file
Vậy thì hiện giờ bạn đã đọc được mấy chương?
Tiêu đề của các chương ấy là gì?
Nếu biết tiêu đề từ chương 1 đến chương bạn đang học, tôi sẽ cho biết học xong mỗi chương ấy bạn sẽ được gì?
 
Upvote 0
Vậy thì hiện giờ bạn đã đọc được mấy chương?
Tiêu đề của các chương ấy là gì?
Nếu biết tiêu đề từ chương 1 đến chương bạn đang học, tôi sẽ cho biết học xong mỗi chương ấy bạn sẽ được gì?

Thưa thầy em đọc xong chương 1: Giới thiệu về visual basic for applications.
Học xong chương này em sẽ được gì ạ ?
 
Upvote 0
Thưa thầy em đọc xong chương 1: Giới thiệu về visual basic for applications.
Học xong chương này em sẽ được gì ạ ?
Thì sẽ biết được:
- VBA là phần mềm hổ trợ cho bảng tính Excel. Được cho vào "miễn phí" kể từ Excel 95/97. Trước đó, Excel 4 phải trả thêm tiền mới có VBA.
- VBA vốn là phần mềm chính để tạo UDF's cho Access. Vì vậy, một số hàm trong VBA phải được hiểu theo cách làm việc của Access.
- VBA không phải là ngôn ngữ lập trình hướng đối tượng nhưng nó được liên kết với bảng tính qua đối tượng cho nên một chút căn bản về cấu trúc đối tượng sẽ giúp cho công việc dễ dàng hơn.
- VBA được Microsoft phát triển (gần như) song song với VBScript cho nên các code VBScript dưa vào VBA chỉ cần được chỉnh sửa chút xíu. Tuy nhiên, vì VBA có sự liên hệ chặt chẽ với đối tượng bảng tính cho nên code VBA chưa chắc đem ứng dụng được vào VBScript.
- VBA là ngôn ngữ phiên dịch trực tiếp, trình dịch dịch từng câu lệnh mà chạy. Khác với các ngôn ngữ như Pascal, trình dịch phải dịch cả cụm code trong file trước khi có thể chạy (thực ra còn phải link/kết nối với các mã thư viện trước khi thành exe)
 
Upvote 0
Thì sẽ biết được:
- VBA là phần mềm hổ trợ cho bảng tính Excel. Được cho vào "miễn phí" kể từ Excel 95/97. Trước đó, Excel 4 phải trả thêm tiền mới có VBA.
- VBA vốn là phần mềm chính để tạo UDF's cho Access. Vì vậy, một số hàm trong VBA phải được hiểu theo cách làm việc của Access.
- VBA không phải là ngôn ngữ lập trình hướng đối tượng nhưng nó được liên kết với bảng tính qua đối tượng cho nên một chút căn bản về cấu trúc đối tượng sẽ giúp cho công việc dễ dàng hơn.
- VBA được Microsoft phát triển (gần như) song song với VBScript cho nên các code VBScript dưa vào VBA chỉ cần được chỉnh sửa chút xíu. Tuy nhiên, vì VBA có sự liên hệ chặt chẽ với đối tượng bảng tính cho nên code VBA chưa chắc đem ứng dụng được vào VBScript.
- VBA là ngôn ngữ phiên dịch trực tiếp, trình dịch dịch từng câu lệnh mà chạy. Khác với các ngôn ngữ như Pascal, trình dịch phải dịch cả cụm code trong file trước khi có thể chạy (thực ra còn phải link/kết nối với các mã thư viện trước khi thành exe)
Nghe đâu đó trên Mạng nó nói Excel 2000 Build ra File *.DLL được thì phải
Mạnh khi biết xài Excel thì bắt đầu từ Office 2003 nên ko biết trước đó ra sao
 
Upvote 0
Nghe đâu đó trên Mạng nó nói Excel 2000 Build ra File *.DLL được thì phải
Mạnh khi biết xài Excel thì bắt đầu từ Office 2003 nên ko biết trước đó ra sao
Điều đó hoàn toàn không thuộc về "Chương mở đầu: giới thiệu về VBA"
Và nếu là tôi viết sách "Lập Trình VBA" thì tôi cũng chẳng đề cập đến nó.

Đối với tôi, chúng thuộc về "các thủ thuật nằm ngoài phạm vi bảng tính"
 
Upvote 0

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

Back
Top Bottom