Chuyển đến nội dung
Diễn đàn CADViet
Jin Yong

Lập trình cho Excel

Các bài được khuyến nghị

Đọc kết quả thì sẽ làm như thế này :

http://www.cadviet.com/upfiles/ScreenHunte...May_10_1922.gif

Chẳng thấy kết quả nào hết? các bạn chỉ mình với

Còn cái CODE thì đánh y nguyên vào phải không bạn.

 

Bản thân Excel cũng có thể đọc kết quả từ file *.mdb bằng cách đổi file type trong hộp thoại Open sang thành Access Databases

 

FROMEXCEL.jpg

 

Nhưng đây chỉ là một cách đọc dữ liệu thông thường, chưa có chọn lọc. Do đó chúng ta sẽ dùng mã VBA để lập các lệnh có khả năng đọc file *.mdb, ghi số liệu sang bảng Sheet kèm theo việc phân loại và chọn lọc dữ liệu mong muốn.

Đoạn CODE trên chỉ là một phần nhỏ thể hiện ý đồ lấy dữ liệu. Còn một chương trình hoàn chỉnh thì sẽ phải phối hợp nhiều đoạn mã với chức năng khác nhau. Cho nên bạn copy nguyên đoạn CODE vào trong cửa sổ code của VBA thì không có tác dụng gì cả.

 

Vậy nguyên tắc cơ bản khi viết mã cho VBA thể hiện trong các bước sau đây:

1. Chuẩn bị khả năng giao tiếp với file MDB cho VBD

2. Viết một đoạn chương trình có khả năng gọi ra trong mõi trường Excel, nó phải là Sub () nếu là lệnh hoặc Function () nếu là hàm

3. Gọi thực hiện các đoạn mã đó

 

Bước 1 thể hiện trong hình 1 và 2 của bài http://www.cadviet.com/forum/index.php?s=&...post&p=8477

 

Bước 3 thể hiện trong hình 4, 5 và 6 của bài http://www.cadviet.com/forum/index.php?s=&...post&p=7859

 

Bước 2 mình sẽ thể hiện trong bài sau đây đê các bạn tiện theo dõi

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

(Tiếp bài liền trước)

 

Đây là một ví dụ đơn giản về một Sub có khả năng đọc và xuất dữ liệu nói trong Bước 2 (bài trên).

Giả sử có một file với đường dẫn "D:\VD.mdb" được xuất ra từ ETABS bằng cách thức xuất đã nói ở Bài #8

 

Khi mở bằng Microsoft Access, bạn thấy nó gồm các bảng như hình dưới

 

FROMACCESS.jpg

 

Giả sử chúng ta muốn lấy 1 cặp lực cắt và mô men của dầm B1 (tương ứng là V2 và M3) trong bảng Beam Forces của file trên, ta có đoạn Code sau:

 

Sub LDL()
Dim DB As Database
Dim rstBeamForces As Recordset
Dim VD
Set DB = OpenDatabase("D:\VD.mdb")
Set rstBeamForces = DB.OpenRecordset("SELECT * FROM [beam Forces]")
rstBeamForces.Filter = "Beam = B1"

Sheet1.Cells(3, 1) = "Ten dam"
Sheet1.Cells(3, 2) = "Luc cat"
Sheet1.Cells(3, 3) = "Momen"

Sheet1.Cells(4, 1) = rstBeamForces.Fields("Beam")
Sheet1.Cells(4, 2) = rstBeamForces.Fields("V2")
Sheet1.Cells(4, 3) = rstBeamForces.Fields("M3")
End Sub

 

File ví dụ đây:

File Excel

File MDB

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Kiến thức VBA cơ bản trong Excel tôi đã up ở mục dưới rồi anh Nguyen Hoanh ạ:

 

http://www.giaiphapexcel.com/forum/showthread.php?t=888

 

Vì đây là diễn đàn về Cad nên tôi quan tâm hơn về VBA for Cad. Tuy nhiên để lập trình tốt trong Cad, tôi vẫn cần nắm sâu hơn nữa kiến thức cơ bản về Cad thì mới biết lập trình Cad. Nhưng về VBA for Cad thì ở diễn đàn này có vẻ ít người quan tâm.

Rất quan tâm nhưng k hiểu rõ đc hết mà thôi,biết đc nhiều sẽ quan tâm đc nhiều,vậy nên đề nghị bạn post thêm và đi sâu hơn.Bạn post luôn fần mềm excel để mình và mọi người có thể thực hành luôn những bài của bạn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

đang ngiên cứu vấn đề này. may quá được các bác hướng dẩn. xem file ketcau cua bac jin rồi. chạy đã luôn. bác cố gắn hướng dẩn bọn em xong cái bảng tính này nhen

thank các bác nhiều. mà các bác ghi cụ thể tí. như bác jin là ok. có file mẫu ví dụ là ngon.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

trời đất hóa ra cái topic này có từ thời napoleon. hix

nhưng dù sao củng post thắc mắc của mình mong anh jin có thể thấy và trả lời giúp em. em đang làm tốt ngiệp.

trong bảng tính cột của anh. phần copy datasbase. em hiểu ý đồ của anh nhưng ko thể hiểu nổi cách anh viết code. chổ vòng lặp ấy và chổ dim row id, row id =7. em củng thử copy cái hàm này sang một bảng tính mới để thử, nhưng ko chạy, biết là thiếu dử liệu nhập vào nhưng tìm hoài ko ra. mong anh giúp đỡ

Private Sub cmdCopy_Click()

Dim DB As Database

Dim rstFrameSection As Recordset

Dim rstFrameSectionProperty As Recordset

Dim rstColumnForces As Recordset

Dim rstOpen1 As Recordset

Dim rstOpen2 As Recordset

Dim rstOpen3 As Recordset

Dim rstOpen4 As Recordset

Dim rstOpen5 As Recordset

Dim rstSec1 As Recordset

Dim rstSec2 As Recordset

Dim rstSec3 As Recordset

Dim rstSec4 As Recordset

Dim rstSec5 As Recordset

 

Dim Row_ID

 

Set DB = OpenDatabase(MDBFile)

Set rstFrameSection = DB.OpenRecordset("SELECT * FROM [Frame Section Assignments]")

Set rstFrameSectionProperty = DB.OpenRecordset("SELECT * FROM [Frame Section Properties]")

Set rstColumnForces = DB.OpenRecordset("SELECT * FROM [Column Forces]")

 

Row_ID = 7

For i = 1 To lstBD.ListCount

Set rstOpen1 = rstColumnForces.OpenRecordset()

rstOpen1.Filter = QColumn(lstBD.List(i - 1))

Set rstOpen2 = rstOpen1.OpenRecordset()

With rstOpen2

Do While Not .EOF

SBT Row_ID, 1, .Fields("Story")

SBT Row_ID, 2, .Fields("Column")

SBT Row_ID, 3, .Fields("Load")

SBT Row_ID, 4, .Fields("Loc")

Set rstSec1 = rstFrameSection.OpenRecordset()

rstSec1.Filter = QStory(.Fields("Story"))

Set rstSec2 = rstSec1.OpenRecordset()

rstSec2.Filter = QLine(.Fields("Column"))

Set rstSec3 = rstSec2.OpenRecordset()

Set rstSec4 = rstFrameSectionProperty.OpenRecordset()

rstSec4.Filter = QSectionName(rstSec3.Fields("AnalysisSect"))

Set rstSec5 = rstSec4.OpenRecordset()

SBT Row_ID, 5, rstSec5.Fields("WidthTop") * 100

SBT Row_ID, 6, rstSec5.Fields("Depth") * 100

SBT Row_ID, 7, 3.5

SBT Row_ID, 8, .Fields("P")

SBT Row_ID, 9, .Fields("M2")

SBT Row_ID, 10, .Fields("M3")

Row_ID = Row_ID + 1

rstSec1.Close

rstSec2.Close

rstSec3.Close

rstSec4.Close

rstSec5.Close

.MoveNext

Loop

End With

rstOpen1.Close

rstOpen2.Close

PROGES1.Value = Int(i * 100 / lstBD.ListCount)

Next

rstFrameSection.Close

rstFrameSectionProperty.Close

rstColumnForces.Close

DB.Close

End

End Sub

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào bạn Sonfa02, có một điều mình muốn chia sẻ với bạn, đó là một điều mà mình cho rằng rất quan trọng trong lập trình: Điều tối quan trọng là mình biết mình muốn làm cái gì (mục đích), và mình sẽ làm điều đó như thế nào. Có được đường lối, bạn sẽ nghĩ ra thuật toán (vì nó chính là hiện thân của đường lối, chỉ là viết theo một cách khoa học hơn thôi). Và việc tiếp theo chỉ là Code.

Đoạn mã Private Sub cmdCopy_Click() gồm 2 nhiệm vụ:

- Lấy kích thước tiết diện hình học của Cột

- Lấy nội lực N, Mx, My của Cột

Muốn thế trước tiên phạn phải nắm được 2 vấn đề:

- Cấu trúc file MDB được xuất ra bới ETABS

- Cách thức đọc dữ liệu từ file MDB bằng ngôn ngữ VB

Ngoài ra, bạn cũng cần phải biết cách thức làm việc của Access, như khả năng lọc giá trị...

 

Coi như bạn đã biết được các vấn đề này rồi (mình đã từng viết qua ở các bài trước). Sau đây mình sẽ giải thích đoạn Code mà mình đã viết.

 

Việc khai báo biến Row_ID và đặt Row_ID = 7 thực chất là đánh dấu cái hàng mình sẽ ghi dữ liệu vào bảng Excel, vì như bạn thấy, trong bảng Excel của mình, các dữ liệu bắt đầu ở dòng thứ 7 (các tròng trên gồm tiêu đề, đầu mục bảng...)

 

- Dòng thứ 22 tính từ dòng Private Sub cmdCopy_Click() là mở đầu của vòng lặp For - Next. Ý nghĩ của nó là lần lượt điểm qua từng tên Cột mình vấn copy vào bảng tính. Vì như bạn biết, giữa một khối dữ liệu đồ sộ mà Etabs xuất ra, chúng ta chỉ lựa chọn một vài trong số đó để làm thuyết minh mà thôi.

- Trong vòng lặp này: Mình sẽ mở bảng Nội lực (Forces) để lấy nội lực, đồng thời cũng lấy tên Tầng và tên Cột, để rồi từ đó sử dụng tính năng lọc Filter, để lầy tiết diện ứng với Cột mình đang tính toán. Nên nhơ ở đây phải thông qua 2 bảng, bangt thứ nhất cho biết Cột A ứng với loại tiết diện B, và bảng thứ 2 sẽ cho biết loại tiết diện B ứng với các kích thước (b*h) như thế nào.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

em cảm ơn anh Jin nhiều lắm. anh mới nhìn là biết trình độ của em rồi. nói thực em mới biết vba à. trình độ và chuyên môn của em còn bị lũng đoạn, nhiều vấn đề cơ bản còn phải dỡ sách ra đọc. nói túm lại hiện trạng của em bây giờ là học "nhảy cóc" chứ ko có một hệ thống hay nền tảng nào hết. đang cố gắng hoàn thiện dần. bài viết và hướng dẩn của anh Jin rất hay và dể hiểu. anh nói là em làm được ngay. có điều là để em tự làm thì ko tự ngĩ ra được, nên nhiều cái em hỏi hơi thừa, do học "nhảy cóc" nên mất căn bản. mong anh Jin thông cảm và giúp đỡ em trong quá trình trao đổi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bản thân là một kỹ sư, Jin lập trình với mục đích hỗ trợ cho công việc của mình, và do đó, Jin học lập trình một cách rất thực dụng. Bản thân kiến thức lập trình của Jin cũng không bài bản, Jin không tìm hiểu sâu vào việc lập trình mà chỉ cần tìm những phần có thể giúp mình đạt được mục đích.

Jin học lập trình bằng cách học theo người khác, một "người khác" rất giỏi ở đây chính là Google. Khi vướng một vấn đề gì đó, Jin thường search trên mạng, cả tiếng việt nhưng thường thì là tiếng Anh (không quan trọng, vì chỉ cần cái CODE). Sau đó đầu tiên Jin làm theo, rồi cố hiểu, và cuối cùng nó thành của mình.

Những phần mềm đầu tiên của Jin rất thô sơ, rồi sau đó trau chuốt dần.

Đó là kinh nghiệm của Jin, Jin nghĩ nó cũng sẽ phù hợp với bạn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

khả năng đọc tiếng anh của em ko tốt lắm, lập trình đòi hỏi tư duy logic, cái này thú thực em củng kém, cái gì có mẩu sẳn thì em mới làm được. mong anh giúp đỡ nhiều. theo hướng dẩn của anh em cũng có làm được 2 cái ví dụ nho nhỏ. 1 cái chạy 1 cái ko. anh xem giúp e.

những cái em muốn bổ sung là trong ví dụ 1 em muốn chọn hết tầng thì làm sao. trong ví dụ 2( em sưu tầm và sữa lại), mục đích là để mỡ file mdb nhưng nó ko chạy, anh xem giúp hộ e. em đang trong quá trình làm tốt ngiệp, phần này em đang rất gấp, anh giúp đỡ em nhiều nhé anh. em cảm ơn anh nhiều. anh có thể cho em nick yahoo ko?

http://www.mediafire.com/?3xqy71lliiw96b4

http://www.mediafire.com/file/rn4v5vbht3w56li/Book1_11..xls

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

à các vấn đề này em giải quyêt1 được rồi. bây giờ em đang bí phần code tính toán và lọc dử liệu, anh có thể ví dụ cho em một cái được ko? anh có thể ví dụ tren file của em luôn đươc ko ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Rất tiếc Jin không thể giúp bạn viết code được, Jin cũng có những dự án dang dở chưa thực hiện xong.

Jin nghĩ bây giờ khó nhất đối với bạn là phương pháp tính toán cốt thép cột,

nếu vướng mắc vấn đề gì bạn có thể hỏi nhé!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

tính toán cột thì em biết. cái khó là em chưa lập bảng tính lần nào cả, nên ko biết khai báo, và kết nối chúng lại với nhau, em có đọc code của anh, nhưng thực sự rất khó hiểu, nhiều biến em ko biết nó ở đâu ra, em mong anh cố gắng viết cho em một đoạn code nhỏ thôi, ví dụ như lọc 1 phần tử nào đó như Mmax, rồi lấy giá trị này tính vào công thức nào đó, đơn giản thôi. ý của em là em xem anh cách anh làm, cách anh đặt vị trí của chúng ở đau trong bảng.em mới bắt đầu nên rất khó mò mẫm, thank anh nhiều. mong anh hồi âm sớm. à anh có thể thay cho em cái code mà mặc định lưu file mdb ở ổ C:/, bây giờ em muốn thay đồi là khi thực hiện lệnh thì nó sẽ cho phép ta chọn file mdb ở bất cứ đâu, giống như nút công cụ open file trong wỏd hay excel ấy.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cho em hỏi trong file tính cột của anh. sau khi tính thép, các giá trị có ô màu xanh, cái đó có ý ngĩa là gì vậy? phần lọc là lọc nhửng trường hợp có tiết diện thép lớn nhất phải ko ạ, vậy khi lọc phải điền số( mặc định là 15). cái số này ngỉa là sao ạ. mây ngày này em vẩn chưa đọc hiểu hết các code của anh. thực sự rất khó hiểu, mong anh giúp đỡ em nhiều hơn, thank anh nhiều

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các giá trị ô màu xanh thực chất để hiển thị các giá trị >0 cho dễ nhìn.

Phần lọc dùng để chọn ra diện tích thép lớn nhất

Cách thông thường mà chúng ta học là chọn ra 3 trường hợp tổ hợp nguyên hiểm nhất để tính thép: Nmax-Mtu, Mmax-Ntu và Mmin-Ntu. Trong lập trình, do không ngại khối lượng tính toán, có thể tính toán tất cả các tổ hợp rồi chọn ra trường hợp có diện tích thép lớn nhất. Nhưng chọn ra như nào khi mà trong bảng Excel chỉ là một đống các số liệu. Quan sát thấy mỗi cột có 3 tiết diện được xuất ra, nếu như bạn có 5 trường hợp tổ hợp, thì số dòng dữ liệu dành cho mỗi cột (tại một tầng) là 3*5=15 (con số này sẽ là 18 nếu có 6 tôt hợp). Như vậy ta chỉ cần thực hiện một vòng lặp, trong đó cứ 15 hàng thì ta phải lọc một lần. Đây chính là ý nghĩa của con số 15.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cảm ơn anh. thực sự em mới ngiên cứu thẳng vb nên có nhiều cái ko hiểu. em có mua cuốn sách vb cho excel của phan tự hướng, nhưng ko giúp gì được nhiều, trong code anh viết có nhiều hàm em ko biết biết nó có ngĩa gì, anh có thể giúp em một số tài liệu, hoặc cách học như thế nào, bảng tính cột của anh em nên đọc thứ tự như thế nào, cái gì trước cái gì sau. thank anh

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nghĩ cũng thật khó cho bạn,

như đã nói ở trên, tài liệu VB hay VBA Jin đều không có, tất cả chỉ là bắt nguồn từ những kinh nghiệm tu tập được từ rất rất nhiều các phần mềm mà Jin đã viết, từ một đoạn mã Pascal giải phương trình bậc 2 đơn giản cho đến một phần mềm hỗ trợ thiết kế kết cấu với khá nhiều mẹo mực.

Lời khuyên của Jin giành cho bạn là xin đừng vội vàng, bạn hãy từ từ bắt nguồn từ đơn giản.

Chúc bạn thành công

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

do em đang làm đồ án tốt ngiệp nên có hơi nóng vội, lại lỡ nổ với thầy giáo nữa, dùng vb để lập bảng tính và vẽ trong cad. bây giờ mới biết...ko biết nói sao với thầy bây giờ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lỡ "NỔ" rồi hả? Lỡ rồi thì chơi tới bến luôn đi! Biến cái nổ thành cái thật. Cố lên nhé! Mail cho sư phụ VBA trường đại học giao thông vận tải CS2 nè: space_cow_boy2004@yahoo.com ( đã tốt nghiệp ) he he!

Anh này tên là Hùng, viết VBA khá tốt, có sẵn mấy cái VBA dùng làm đồ án đấy!

Good luck!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lỡ "NỔ" rồi hả? Lỡ rồi thì chơi tới bến luôn đi! Biến cái nổ thành cái thật. Cố lên nhé! Mail cho sư phụ VBA trường đại học giao thông vận tải CS2 nè: space_cow_boy2004@yahoo.com ( đã tốt nghiệp ) he he!

Anh này tên là Hùng, viết VBA khá tốt, có sẵn mấy cái VBA dùng làm đồ án đấy!

Good luck!

vậy à, thank anh nhiều nha, nhưng giờ liên lạc với anh ấy thế nào, em sợ anh ấy bận, thực chất em muốn tự làm mấy cái bảng tính, nhưng có file sẳn để học hỏi thì rất tốt, thực sự cảm ơn anh.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
vậy à, thank anh nhiều nha, nhưng giờ liên lạc với anh ấy thế nào, em sợ anh ấy bận, thực chất em muốn tự làm mấy cái bảng tính, nhưng có file sẳn để học hỏi thì rất tốt, thực sự cảm ơn anh.

anh ơi em add nick anh Hung mà ko thấy trả lời, anh có thể nhắn giùm em ko. hay anh cho sai nick

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

hix chủ đề hay thế mà lâu ko thấy ai đả động gì hết, anh Jin ơi anh cho mấy bài tập, mổi ngày mổi bài nhỏ thôi, cho bọn em học hỏi, cái này khó quá

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Anh jin ơi, lâu lắm mới quay lại dùng vba

cai bảng tính cột 2 phương của anh, em ko hiểu chổ này, anh giải thích cho em tí nhé.

phần copy dữ liệu từ etabs, em đang lập bảng tính cột, tới phần nhận tiết diện cột thì vướng, giả sử trong file *mdb ở bảng "column force" có luôn tiết diện cột tương ứng với "tầng" "nội lực" thì lọc ra dể dàng, còn ở đây nó lại nằm trong bảng

"concrete column properties" hoặc bảng " concrete column section". 2 bảng này thì có chứa tiết diện cột, nhưng nó lại nằm riêng rẽ, không tương ứng với nội lực và vị trí tầng, câu hỏi của em là làm sao trích được tiết diện cột tương ứng vơi vị trí tầng, và nội lực tại đó.

trong bảng tính của anh đả giải quyết được vấn đề này, nhưng em nhìn hoài mà ko ra, anh phân tích cái code này giúp em nhé, với lại có mấy tham số em ko hiểu, như lstBD.Listcount, hay lstBS cái này là cái gì ạ

Row_ID = 7

For i = 1 To lstBD.ListCount

Set rstOpen1 = rstColumnForces.OpenRecordset()

rstOpen1.Filter = QColumn(lstBD.List(i - 1))

Set rstOpen2 = rstOpen1.OpenRecordset()

With rstOpen2

Do While Not .EOF

SBT Row_ID, 1, .Fields("Story")

SBT Row_ID, 2, .Fields("Column")

SBT Row_ID, 3, .Fields("Load")

SBT Row_ID, 4, .Fields("Loc")

Set rstSec1 = rstFrameSection.OpenRecordset()

rstSec1.Filter = QStory(.Fields("Story"))

Set rstSec2 = rstSec1.OpenRecordset()

rstSec2.Filter = QLine(.Fields("Column"))

Set rstSec3 = rstSec2.OpenRecordset()

Set rstSec4 = rstFrameSectionProperty.OpenRecordset()

rstSec4.Filter = QSectionName(rstSec3.Fields("AnalysisSect"))

Set rstSec5 = rstSec4.OpenRecordset()

SBT Row_ID, 5, rstSec5.Fields("WidthTop") * 100

SBT Row_ID, 6, rstSec5.Fields("Depth") * 100

SBT Row_ID, 7, 3.5

SBT Row_ID, 8, .Fields("P")

SBT Row_ID, 9, .Fields("M2")

SBT Row_ID, 10, .Fields("M3")

Row_ID = Row_ID + 1

rstSec1.Close

rstSec2.Close

rstSec3.Close

rstSec4.Close

rstSec5.Close

.MoveNext

Loop

End With

rstOpen1.Close

rstOpen2.Close

PROGES1.Value = Int(i * 100 / lstBD.ListCount)

Next

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hoàn toàn nhất trí! Rất mong được anh PhanTuHuong tham gia. Tuyệt vời hơn nữa nếu như anh có thể vui lòng làm cánh chim đầu đàn, dẫn đường để anh em tập bay theo?

Đồng ý với các bác cao thủ về Cad và Cel, các bác là những người thầy vĩ đại, mà thầy thì đâu giữ lại cho mình làm gì phải không các bác? Mong các bác tận tình truyền đạt lại cho các thế hệ đi sau "Một đất nước với nhiều con người giỏi thì mới giàu mạnh được" Cố lên các bạn nha!!!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×