máy bơm nước hỏa tiễn công ty in ấn https://duan-knparadise.com/ Bơm nước hỏa tiễn bóp da nam Túi nilon PP cong ty in bieu mau
Cac cao thu VBA chi gium cho!!! - Diễn đàn của các kỹ sư kết cấu Việt Nam










































































Features
Go Back   Diễn đàn của các kỹ sư kết cấu Việt Nam > ỨNG DỤNG TIN HỌC TRONG THIẾT KẾ XÂY DỰNG > Lập trình tính toán, phân tích kết cấu
Tên thành viên
Mật mã
Tin HOT Thông tin BQT diễn đàn

Result  Reload Thống Kê - Diễn đàn của các kỹ sư kết cấu Việt Nam
All Forums | Thông báo | Văn Bản Pháp Luật | Văn Hóa Văn Nghệ Giao Lưu
Please wait...
Please wait...
Loading...
Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 20-12-2006   #1
vietha209
Thành viên
 
vietha209's Avatar
 
Tham gia ngày: Dec 2006
Bài gởi: 56
Thanks: 17
Thanked 35 Times in 10 Posts
Angry Cac cao thu VBA chi gium cho!!!

Các cao thủ VBA chỉ giùm cho em biết trong AutoCad làm sao để mình gán được số chữ số sau dấu phẩy, ví dụ như để text cao độ có 2 chữ số sau dấu phẩy như thế này (20.09)
Mong được các bác chỉ giáo
vietha209 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-12-2006   #2
PMXD
Moderator
 
PMXD's Avatar
 
Tham gia ngày: Sep 2004
Bài gởi: 205
Thanks: 0
Thanked 115 Times in 30 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Bạn có thể dùng hàm Format của VBA
Ví dụ:
Dim CaoDo as Double
Dim KetQua as String
CaoDo=2.13567
KetQua=Format(CaoDo,"0.00")

Chúc bạn thành công
__________________
Công ty Cổ phần kỹ thuật công trình- Thương mại C.N.C.C
Email : info@cncc.vn
PMXD vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-12-2006   #3
vietha209
Thành viên
 
vietha209's Avatar
 
Tham gia ngày: Dec 2006
Bài gởi: 56
Thanks: 17
Thanked 35 Times in 10 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Thanks very much.
Hôm trước em cũng nghĩ tới hàm format này rồi nhưng chưa thử vì nghĩ rằng nó là của VB for Excel. Hì, cũng tại căn bản trình độ VBA của em còn còi lắm. Một lần nữa cảm ơn bác PMXD rất nhiều.
vietha209 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-12-2006   #4
vietha209
Thành viên
 
vietha209's Avatar
 
Tham gia ngày: Dec 2006
Bài gởi: 56
Thanks: 17
Thanked 35 Times in 10 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

À mà tiện đây cho em hỏi có cách nào lấy được vị trí (position) của dấu phẩy (ví dụ vị trí của dấu phẩy trong text 20.09) ra không. Em đang làm bình đồ cao độ mà ông sếp muốn in ra cao độ dạng 20.09 trong đó dấu . trùng đúng với vị trí điểm point mà em đang bó tay
vietha209 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-12-2006   #5
TrungTHXD
Thành viên
 
Tham gia ngày: Nov 2006
Bài gởi: 40
Thanks: 0
Thanked 4 Times in 3 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Bạn dùng hàm TextWidth("20.") để ra vị trí của dấu chấm.
TrungTHXD vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-12-2006   #6
vietha209
Thành viên
 
vietha209's Avatar
 
Tham gia ngày: Dec 2006
Bài gởi: 56
Thanks: 17
Thanked 35 Times in 10 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Anh ơi em thử tìm trong help rồi nhưng sao không thấy có cái gì là textwidth cả. Thôi thì anh đã giúp rồi thì giúp cho trót, anh chỉ hộ em cái code move text từ một vị trí cho trước ((0,0,0) chẳng hạn) đến vị trí dấu phẩy như em đã nói trên. Thank you anh trước nha.
vietha209 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2006   #7
ThangCoi
Thành viên nhiệt huyết
 
ThangCoi's Avatar
 
Tham gia ngày: Mar 2006
Nơi Cư Ngụ: Không cố định
Bài gởi: 603
Thanks: 55
Thanked 279 Times in 104 Posts
Send a message via Yahoo to ThangCoi
Default Ðề: Cac cao thu VBA chi gium cho!!!

Tiện đây các bác cho em hỏi với ! (Em đang tập tành VBA mà )
Vị dụ như em muốn tìm vị trí của dấu X trong một chuỗi string thì dùng hàm nào ạ ! Em thử dùng Find() nhưng không được hình như chỉ EXEL có hàm này thôi !
ThangCoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2006   #8
vietha209
Thành viên
 
vietha209's Avatar
 
Tham gia ngày: Dec 2006
Bài gởi: 56
Thanks: 17
Thanked 35 Times in 10 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trời đất ạ, theo em hiểu thì x với . có gì khác nhau đâu (về cú pháp ý mà). Em mà được trả lời thì câu của bác cũng OK còn gì nữa. Mà bác nói cũng đang tập tành VBA phải không ạ, thế thì mời bác ghé qua http://www.ketcau.com/forum/showthre...5934#post35934 để tìm hiểu về việc tái mở lớp VBA nha. Quickly.
vietha209 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2006   #9
ThangCoi
Thành viên nhiệt huyết
 
ThangCoi's Avatar
 
Tham gia ngày: Mar 2006
Nơi Cư Ngụ: Không cố định
Bài gởi: 603
Thanks: 55
Thanked 279 Times in 104 Posts
Send a message via Yahoo to ThangCoi
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trích:
Nguyên văn bởi vietha209
Trời đất ạ, theo em hiểu thì x với . có gì khác nhau đâu (về cú pháp ý mà). Em mà được trả lời thì câu của bác cũng OK còn gì nữa.
Hả !
X được gán là một chuỗi (string) ! Còn . như trên của cậu là một số (Double ) !
ThangCoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2006   #10
PMXD
Moderator
 
PMXD's Avatar
 
Tham gia ngày: Sep 2004
Bài gởi: 205
Thanks: 0
Thanked 115 Times in 30 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Bạn có thể dùng hàm dưới đây để xác định vị trí của dấu phẩy "." hoặc bất kỳ ký tự nào bạn muốn
'====================================================
Function TimViTriDauPhay(Chuoi As String, Optional Kytu = ".") As Long
Dim i As Long
For i = 1 To Len(Chuoi)
If Mid(Chuoi, i, 1) = Kytu Then
TimViTriDauPhay = i
Exit For
End If
Next i
End Function
__________________
Công ty Cổ phần kỹ thuật công trình- Thương mại C.N.C.C
Email : info@cncc.vn
PMXD vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-12-2006   #11
eStructor
Thành viên mới
 
Tham gia ngày: Sep 2006
Bài gởi: 7
Thanks: 0
Thanked 0 Times in 0 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Sao không dùng hàm InStr(), dùng vòng lặp làm gì cho nó chậm chương trình ra.
eStructor vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-12-2006   #12
PMXD
Moderator
 
PMXD's Avatar
 
Tham gia ngày: Sep 2004
Bài gởi: 205
Thanks: 0
Thanked 115 Times in 30 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trích:
Nguyên văn bởi eStructor
Sao không dùng hàm InStr(), dùng vòng lặp làm gì cho nó chậm chương trình ra.
Đó cũng là một cách hay, và nó sẽ hay hơn nếu bạn làm một ví dụ cho mọi người.
Cám ơn đã góp ý
__________________
Công ty Cổ phần kỹ thuật công trình- Thương mại C.N.C.C
Email : info@cncc.vn
PMXD vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-12-2006   #13
ThangCoi
Thành viên nhiệt huyết
 
ThangCoi's Avatar
 
Tham gia ngày: Mar 2006
Nơi Cư Ngụ: Không cố định
Bài gởi: 603
Thanks: 55
Thanked 279 Times in 104 Posts
Send a message via Yahoo to ThangCoi
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trích:
Nguyên văn bởi PMXD
Bạn có thể dùng hàm dưới đây để xác định vị trí của dấu phẩy "." hoặc bất kỳ ký tự nào bạn muốn
'====================================================
Function TimViTriDauPhay(Chuoi As String, Optional Kytu = ".") As Long
Dim i As Long
For i = 1 To Len(Chuoi)
If Mid(Chuoi, i, 1) = Kytu Then
TimViTriDauPhay = i
Exit For
End If
Next i
End Function
Tức là mình phải đi đường vòng hả bác !
ThangCoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-12-2006   #14
eStructor
Thành viên mới
 
Tham gia ngày: Sep 2006
Bài gởi: 7
Thanks: 0
Thanked 0 Times in 0 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Đoạn mã của bạn có thể được viết theo cách của Microsoft như saU:

Vitridauphay=InStr(1, Chuoi, ",")

Để chương trình chạy nhanh nên cố gắng tối đa dùng hàm built-in và giảm tối thiểu việc dùng vòng lặp.
eStructor vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-12-2006   #15
ThangCoi
Thành viên nhiệt huyết
 
ThangCoi's Avatar
 
Tham gia ngày: Mar 2006
Nơi Cư Ngụ: Không cố định
Bài gởi: 603
Thanks: 55
Thanked 279 Times in 104 Posts
Send a message via Yahoo to ThangCoi
Default Ðề: Cac cao thu VBA chi gium cho!!!

Đây là chương trình đầu tay của em các bác cho ý kiến nhé !
-------------------
'Chuong trinh lam tron dim len 5 hoac 0
'Neu dim lam tron bang khong se lay gia tri thuc cua dim khong co sau phan
Public Sub TextDim4()
Dim Dim1 As AcadDimension
Dim KT As String
Dim i As Integer
Dim Vse As AcadSelectionSet
Dim VFilterData(0) As Variant, VFilterType(0) As Integer
'============================================================
On Error GoTo Ketthuc
For i = 0 To ThisDrawing.SelectionSets.Count - 1
ThisDrawing.SelectionSets(i).Delete
Next i
Set Vse = ThisDrawing.SelectionSets.Add("Dimension")
VFilterType(0) = 0: VFilterData(0) = "Dimension"
Vse.SelectOnScreen VFilterType, VFilterData
For i = 0 To Vse.Count - 1
Set Dim1 = Vse(i)
KT = 5 * Round(Dim1.Measurement / 5, 0)
If KT = 0 Then
KT = Round(Dim1.Measurement, 0)
End If
Dim1.TextOverride = KT
Dim1.Highlight (False)
Next i
Ketthuc:
End Sub
------------------------
ThangCoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-12-2006   #16
daucuchuoi
Thành viên
 
Tham gia ngày: Jan 2005
Bài gởi: 44
Thanks: 0
Thanked 10 Times in 6 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Tôi xin góp ý về chương trình:
Trước hết, các bác phải biết cách trình bày để dễ theo dõi và gỡ rối. Tôi xin sửa lại như sau:

-------------------
'Chuong trinh lam tron dim len 5 hoac 0
'Neu dim lam tron bang khong se lay gia tri thuc cua dim khong co sau phan
Public Sub TextDim4()
Dim Dim1 As AcadDimension
Dim KT As String
Dim i As Integer
Dim Vse As AcadSelectionSet
Dim VFilterData(0) As Variant, VFilterType(0) As Integer
'========================================
On Error GoTo Ketthuc

For i = 0 To ThisDrawing.SelectionSets.Count - 1
ThisDrawing.SelectionSets(i).Delete
Next i

Set Vse = ThisDrawing.SelectionSets.Add("Dimension")
VFilterType(0) = 0: VFilterData(0) = "Dimension"
Vse.SelectOnScreen VFilterType, VFilterData

For i = 0 To Vse.Count - 1
Set Dim1 = Vse(i)
KT = 5 * Round(Dim1.Measurement / 5, 0)
If KT = 0 Then
KT = Round(Dim1.Measurement, 0)
End If
Dim1.TextOverride = KT
Dim1.Highlight (False)
Next i

Ketthuc:
End Sub
------------------------

Có phải dễ nhìn hơn không?

Còn về làm tròn số, bạn dùng thử 2 hàm:

Int Function, Fix Function Example
This example illustrates how the Int and Fix functions return integer portions of numbers. In the case of a negative number argument, the Int function returns the first negative integer less than or equal to the number; the Fix function returns the first negative integer greater than or equal to the number.

Dim MyNumber
MyNumber = Int(99.8) ' Returns 99.
MyNumber = Fix(99.2) ' Returns 99.

MyNumber = Int(-99.8) ' Returns -100.
MyNumber = Fix(-99.8) ' Returns -99.

MyNumber = Int(-99.2) ' Returns -100.
MyNumber = Fix(-99.2) ' Returns -99.
daucuchuoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-12-2006   #17
daucuchuoi
Thành viên
 
Tham gia ngày: Jan 2005
Bài gởi: 44
Thanks: 0
Thanked 10 Times in 6 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Xin lỗi các bác, tôi có trình bày lại đoạn mã chương trình theo kiểu chia thành các block, nhưng khi gửi lên bị mất hết các khoảng trắng đầu dòng, nên chả khác giè trước.
daucuchuoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-12-2006   #18
ThangCoi
Thành viên nhiệt huyết
 
ThangCoi's Avatar
 
Tham gia ngày: Mar 2006
Nơi Cư Ngụ: Không cố định
Bài gởi: 603
Thanks: 55
Thanked 279 Times in 104 Posts
Send a message via Yahoo to ThangCoi
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trích:
Nguyên văn bởi daucuchuoi
Tôi xin góp ý về chương trình:
Trước hết, các bác phải biết cách trình bày để dễ theo dõi và gỡ rối.
Cám ơn bác ! Em cũng muốn trình bày kiểu
...........For i = 0 To ThisDrawing.SelectionSets.Count - 1
............................ThisDrawing.SelectionSets(i).Delete
...........Next i
.............................................................................
...........Set Vse = ThisDrawing.SelectionSets.Add("Dimension")
..........................VFilterType(0) = 0: VFilterData(0) = "Dimension"
...........................Vse.SelectOnScreen VFilterType, VFilterData

Thì nó dễ dọc mà tiện cho mình khi sửa chữa hay Copy Paste hơn ! Nhưng mà Copy vào trang Wed nó mất đi nên đành thôi !
ThangCoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-12-2006   #19
Admin
Guest
 
Bài gởi: n/a
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trích:
Nguyên văn bởi PMXD
Đó cũng là một cách hay, và nó sẽ hay hơn nếu bạn làm một ví dụ cho mọi người.
Cám ơn đã góp ý
Lâu lắm rồi mới thấy a. Viet Anh trở lại diễn đàn.
Nhớ lại hồi đầu của ketcau.com, anh em đi học lớp VBA của anh thấy vui thật.
  Trả Lời Với Trích Dẫn
Old 30-12-2006   #20
PMXD
Moderator
 
PMXD's Avatar
 
Tham gia ngày: Sep 2004
Bài gởi: 205
Thanks: 0
Thanked 115 Times in 30 Posts
Default Ðề: Cac cao thu VBA chi gium cho!!!

Trích:
Nguyên văn bởi ThangCoi
Đây là chương trình đầu tay của em các bác cho ý kiến nhé !
-------------------
'Chuong trinh lam tron dim len 5 hoac 0
'Neu dim lam tron bang khong se lay gia tri thuc cua dim khong co sau phan
Public Sub TextDim4()
Dim Dim1 As AcadDimension
Dim KT As String
Dim i As Integer
Dim Vse As AcadSelectionSet
Dim VFilterData(0) As Variant, VFilterType(0) As Integer
'============================================================
On Error GoTo Ketthuc
For i = 0 To ThisDrawing.SelectionSets.Count - 1
ThisDrawing.SelectionSets(i).Delete
Next i
Set Vse = ThisDrawing.SelectionSets.Add("Dimension")
VFilterType(0) = 0: VFilterData(0) = "Dimension"
Vse.SelectOnScreen VFilterType, VFilterData
For i = 0 To Vse.Count - 1
Set Dim1 = Vse(i)
KT = 5 * Round(Dim1.Measurement / 5, 0)
If KT = 0 Then
KT = Round(Dim1.Measurement, 0)
End If
Dim1.TextOverride = KT
Dim1.Highlight (False)
Next i
Ketthuc:
End Sub
------------------------
Viết thế này thì quá là OK rồi
Chỉ có điều, tôi hay có thói quen giải phóng biến kiểu Object trước khi thoát khỏi Sub hay function.


Sub
......................
Set Dim1 =Nothing
Set Vse=Nothing
End sub

Mà có môt điều khá bất ngờ vì cách đăt tên biến Vse của bạn, vì đây cũng là cách tôi hay đặt tên cho biến này (Vse= Việt Anh SelectionSet, VLine=VietAnh AcadLine, VDim= Việt Anh Dimmention......).Thật thí vị
__________________
Công ty Cổ phần kỹ thuật công trình- Thương mại C.N.C.C
Email : info@cncc.vn
PMXD vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Loading...
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền sử dụng ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Mở

Chuyển đến



Múi giờ GMT. Hiện tại là 10:50 AM.


DIỄN ĐÀN http://ketcau.com/forum NƠI HỘI TỤ CỦA CÁC KỸ SƯ KẾT CÂU VIỆT NAM
WWW.KETCAU.COM - CẦU NỐI CỦA CÁC KỸ SƯ KẾT CẤU CÔNG TRÌNH, ĐỊA KỸ THUẬT VIỆT NAM. DIỄN ĐÀN ĐƯỢC MUA BẢN QUYỀN CỦA JELSOFT ENTERPRISES Ltd. Thiết kế website