Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
13 replies to this topic

#1 Tri

Tri

    biết vẽ circle

  • Members
  • PipPip
  • 31 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 21 December 2010 - 02:20 PM

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
  • 0

#2 khatamxd

khatamxd

    biết vẽ ellipse

  • Members
  • PipPip
  • 50 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 21 December 2010 - 03:46 PM

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.c.../3/acadauto.rar
  • 1

#3 Tri

Tri

    biết vẽ circle

  • Members
  • PipPip
  • 31 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 21 December 2010 - 04:37 PM

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.c.../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
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 21 December 2010 - 05:27 PM

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ể ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 21 December 2010 - 05:44 PM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#6 KS.PhanThanhTu

KS.PhanThanhTu

    biết vẽ point

  • Members
  • PipPip
  • 97 Bài viết
Điểm đánh giá: 76 (tàm tạm)

Đã gửi 21 December 2010 - 07:22 PM

Có gì bạn cứ nhấn F2 nhé :undecided:

VBA hơi bị hay đó, khi nào rảnh mình sẽ làm 1 tut về vụ này :">
  • 1
KS Phan Thanh Tú.Email: Vansulich@yahoo.com

#7 Tri

Tri

    biết vẽ circle

  • Members
  • PipPip
  • 31 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 22 December 2010 - 08:20 AM

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
  • 0

#8 Tri

Tri

    biết vẽ circle

  • Members
  • PipPip
  • 31 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 22 December 2010 - 03:55 PM

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

  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 22 December 2010 - 04:20 PM

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 :">
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#10 Tri

Tri

    biết vẽ circle

  • Members
  • PipPip
  • 31 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 22 December 2010 - 04:34 PM

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.
  • 0

#11 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 22 December 2010 - 04:55 PM

À,bạn bỏ chữ SET ở dòng pinsert đi, vì k Set được với biến variant trong hàm getpoint
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#12 Tri

Tri

    biết vẽ circle

  • Members
  • PipPip
  • 31 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 23 December 2010 - 10:37 AM

À,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
  • 0

#13 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 23 December 2010 - 01:29 PM

- 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é ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#14 nttrung111191

nttrung111191

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 21 April 2016 - 04:48 PM

Mình có blog dạy VBA cơ bản, bạn tham khảo xem học được gì không nhé: http://vbaxd.blogspot.com/


  • 0

Blog VBA xây dựng: http://vbaxd.blogspot.com. Hướng dẫn lập trình mở rộng tính năng cho Autocad và Excel bằng VBA.