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

Hỏi về VBA - Bắt đầu học VBA

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

Chào các bác

Em thử viết 1 đoạn chương trình bằng VBA nho nhỏ để tính tổng các số chẵn nhỏ hơn 10

Sub Tong()
Dim i As Integer
Dim Tong As Integer
Tong = 0
For i = 0 To 10 Step 2
Tong = Tong + i
Next
MsgBox "Tong = " & Tong
End Sub

Đoạn code chạy rất tốt.

Ban đầu ý em muốn xuất dòng tính tổng dưới dòng Command thì phải sử dụng hàm gì ạ?

Em tìm trong Help nhưng mà không thấy. Bí quá, em kiếm trên diễn đàn mình thì thấy có hàm MsgBox để xuất chuỗi dưới dạng hộp thoại

Xin cho em hỏi để xuất dòng tính tổng dưới dòng Command thì phải làm thế nào?

Và em muốn tham khảo tất cả các hàm trong VBA thì em nên tìm ở đâu, vì có 1 số hàm trong VBA mà em tìm trong CAD không có.

 

Các bác biết chỉ cho em với nhé. Nếu có sách nào tham khảo thêm thì tuyệt lắm ạ. Vì em mới bắt đầu nên còn bỡ ngỡ lắm.

Chân thành cảm ơ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
Chào các bác

Em thử viết 1 đoạn chương trình bằng VBA nho nhỏ để tính tổng các số chẵn nhỏ hơn 10

Sub Tong()
Dim i As Integer
Dim Tong As Integer
Tong = 0
For i = 0 To 10 Step 2
Tong = Tong + i
Next
MsgBox "Tong = " & Tong
End Sub

Đoạn code chạy rất tốt.

Ban đầu ý em muốn xuất dòng tính tổng dưới dòng Command thì phải sử dụng hàm gì ạ?

Em tìm trong Help nhưng mà không thấy. Bí quá, em kiếm trên diễn đàn mình thì thấy có hàm MsgBox để xuất chuỗi dưới dạng hộp thoại

Xin cho em hỏi để xuất dòng tính tổng dưới dòng Command thì phải làm thế nào?

Và em muốn tham khảo tất cả các hàm trong VBA thì em nên tìm ở đâu, vì có 1 số hàm trong VBA mà em tìm trong CAD không có.

 

Các bác biết chỉ cho em với nhé. Nếu có sách nào tham khảo thêm thì tuyệt lắm ạ. Vì em mới bắt đầu nên còn bỡ ngỡ lắm.

Chân thành cảm ơn

Bạn thay dòng lệnh

MsgBox "Tong = " & Tong

bằng dòng lệnh

ThisDrawing.Utility.Prompt vbCrLf & tong

Còn đây là sách cho bạn tham khảo các hàm VBA trong cad

http://www.cadviet.com/upfiles/3/acadauto.rar

  • 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
Bạn thay dòng lệnh

MsgBox "Tong = " & Tong

bằng dòng lệnh

ThisDrawing.Utility.Prompt vbCrLf & tong

Còn đây là sách cho bạn tham khảo các hàm VBA trong cad

http://www.cadviet.com/upfiles/3/acadauto.rar

Cho em hỏi thêm là vbCrLf nghĩa là gì ạ?

Cảm ơn anh về cuốn sách.

Các hàm như MsgBox, For.... Next sao em không tìm trong sách không thấy vậy anh??

Em có thể đọc ở đâu? Kiến thức hạn hẹp quá. Anh đừng cười ạ.

 

Cảm ơn anh rất 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

Nó có nghĩa là "xuống dòng" bạn ạ :"> Các hàm cơ bản thì bạn bật help trong VBA, đều có hướng dẫn và ví dụ cụ thể ^^

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

À quên,các ký tự đặc biệt như trên,bạn vào phần Visual Language Reference -> Constants nhé :undecided:

  • 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
Có gì bạn cứ nhấn F2 nhé :leluoi:

 

VBA hơi bị hay đó, khi nào rảnh mình sẽ làm 1 tut về vụ này :">

Cảm ơn các anh nhiều lắm.

Em bấm F2 -> ra cả 1 đống, tha hồ mà học rồi. :undecided:

Rất mong anh Tú, khi nào anh rảnh, anh cho những bài hướng dẫn của anh nhé.

Một lần nữa, chân thành cảm ơn các 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

Các anh lại cho em hỏi nữa nhé:

Em có viết 1 Sub XinChao

Nhưng tại sao khi nhập điểm chèn rồi thì báo lỗi -> Không hiện được dòng chữ mình muốn nhập trong Box lên màn hình?

Em cũng chưa hiểu tại sao?

Xin nhờ các bác chỉ giúp. Em nghĩ nó bị lỗi ở hàm getpoint???

Đây là code

Sub Xinchao()
Dim strmsg As String
strmsg = InputBox("Nhap thong diep chao mung", "HelloWorld")
Dim pinsert As Variant
Set pinsert = ThisDrawing.Utility.GetPoint(, "Nhap diem chen :")
Set objtext = ThisDrawing.ModelSpace.AddText(strmsg, pinsert, 2.5)
ZoomExtents
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

Trước hết là mình chưa thấy phần khai báo đối tượng text của bạn đâu cả.objText máy sẽ hhiểu là j :">

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ước hết là mình chưa thấy phần khai báo đối tượng text của bạn đâu cả.objText máy sẽ hhiểu là j :">

Cảm ơn bác. Mình khai báo thêm đối tượng text nữa

Sub Xinchao()

Dim strmsg As String

Dim objtext As AcadText

Dim pinsert As Variant

strmsg = InputBox("Nhap thong diep chao mung", "HelloWorld")

Set pinsert = ThisDrawing.Utility.GetPoint(, "Nhap diem chen :")

Set objtext = ThisDrawing.ModelSpace.AddText(strmsg, pinsert, 2.5)

ZoomExtents

End Sub

 

Nhưng tại sao vẫn chưa chạy được?

Vẫn còn lóng ngóng chưa hiểu làm sao phải làm sao? Khai báo như thế nào để có thể chạy được Chương trình?? Mong các bác giúp đỡ.

Cảm ơn bác đã hồi âm.

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 bỏ chữ SET ở dòng pinsert đi, vì k Set được với biến variant trong hàm getpoint

  • 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
À,bạn bỏ chữ SET ở dòng pinsert đi, vì k Set được với biến variant trong hàm getpoint

A. Được rồi. Cảm ơn bác ketxu nhiều lắm

Xin cho được hỏi thêm là sau khi mình pick để lấy điểm chèn -> Text đã xuất hiện trên màn hình

Thì mình phải pick thêm 1 cái nữa mới kết thúc lệnh được?

Không hiểu tại sao nữa? Các bác có thể giải thích được không? Cách giải quyết như thế nào để khi pick để lấy điểm chèn -> Text đã xuất hiện trên màn hình -> Kết thúc lệnh luôn???

 

Và mình cũng có viết 1 đoạn Sub nhỏ để lấy Entity bằng hàm Getentity. Nhưng viết xong rồi thì không biết gán đối tượng cho Entity như thế nào để thay đổi thuộc tính của đối tượng chọn bằng Pick

Đây là code

Sub layent()
Dim dt As AcadObject
Dim pt As Variant
ThisDrawing.Utility.GetEntity dt, pt, "Chon doi tuong "
End Sub

Rất mong các bác giúp đỡ

Xin chân thành cảm ơ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

- Về cái tại sao lại phải kick 1 lần nữa là vì lệnh zoom extents bị "k thực hiện được",nên nó cứ đơ đơ ở đấy ^^.Bạn có thể thay bằng Zoomall hoặc

ThisDrawing.Application.ZoomExtents

- Với đối tượng pick bằng lệnh Getentity bạn cứ khai báo là

Dim dt As AcadEntity

xong là có thể set thuộc tính cho nó rồi

 

p/S :Thực ra mình cũng bắt đầu học VBA như bạn thôi,n dù sao có người cùng trao đổi vẫn vui,vì vậy nghĩ gì thì mình nói nấy, có thể sai,bạn và mọi ng đừng cườ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ạ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

×