Professional Documents
Culture Documents
Lap Trinh Vba
Lap Trinh Vba
• Sơ lược về VBA
1 • Các thao tác VBA
VÍ DỤ :
Tạo lệnh tắt viền đậm 1 ô
Developer => record marco => đặt tên lệnh tắt => thực hiện thao tác (produre) =>
stop record => macro => edit
Thử nghiệm
TẠO MỚI 1 HÀM TRONG EXCEL
VÍ DỤ :
‘Tạo hàm tính chu vi hình chữ nhật
Function tinhcvcn(a,b)
chuvi=(a+b)*2
tinhcvcn=chuvi
End function
SUB (THỦ TỤC)
ĐỊNH NGHĨA :
Là 1 chương trình con không trả về 1 giá trị khi nó được gọi
VÍ DỤ :
Sub tinhdtcn ()
a=1
b=1
Dientich=a*b
Msgbox (“Dientich =” & str(Dientich))
End sub
MỐI LIÊN HỆ GIỮA SUB VÀ FUCTION
DẠNG ĐƠN
a = Range(“A3”) (comment : dùng đặt biến Rb, Rs)
b = Cells(row,column) (dùng cho giá trị chạy ví dụ : M,N,V)
DẠNG CHUỖI
Range(“B2:C3”)=9 (dùng copy, insert hàng cột)
TẠO GIAO DIỆN TRONG EXCEL
1) Công thức :
2) Sơ đồ khối :
1) Công thức :
2) Sơ đồ khối :
Ví dụ :
Trong chương trình tính thép cho CẤU KiỆN CHỊU UỐN:
1) Công thức :
2) Sơ đồ khối :
Ví dụ : lựa chọn các điều kiện khi tính cho các tiết diện khác nhau trong
chương trình tính toán cấu kiện chịu uốn :
Sub luachon()
Select Case Cells(2, 1)
Case 1
MsgBox "A"
Case 2
MsgBox "B"
Case Else
MsgBox "E"
End Select
End Sub
2 ) Ví dụ :
tính 10!
giaithua=1
for i= 1 to 10
giaithua=giaithua*i
next i
For j = 6 to 16
if (cells(j,1)<=z and cells(j+1,1)>z) then
exit for
end if
Next j
TÀI LIỆU www.mediafire.com/ USERNAME - giaqui@yahoo.com PASS- 12345678
CẤU TRÚC LẶP
27
Ví dụ :
tong=0
i=0
Do while tong<10
i=i+1
tong = tong +i
Loop
Msgbox(str(tong))
Ví dụ :
Do Until
Loop
For i = 1 to 1000
nuy1=nuy (giả sử)
[ Khối lệnh ]
=> nuy2
If Abs(nuy2 - nuy1) / nuy1 < 0.01 Then
nuy = nuy2
Exit For
Else
nuy = (nuy1 + nuy2) / 2
End If
Next i
CỘT LỆCH TÂM PHẲNG
TÍNH TOÁN CỐT THÉP ( giải quyết vòng lặp thỏa )
TS = 0.05
Do while TS > 0.01
nuy1=nuy (giả sử)
[ Khối lệnh ]
=> nuy2
TS = Abs(nuy2 - nuy1) / nuy1
nuy= (nuy2+nuy1) / 2
Loop
CỘT LỆCH TÂM PHẲNG
LI THUYẾT:
N Rbbx Rs A 's Rs As
M gh Rbbx(ho 0.5 x) Rsc A 's (ho a )
CỘT LỆCH TÂM PHẲNG
VẼ BIỂU ĐỒ TƯƠNG TÁC:
MẢNG 1 CHIỀU
MẢNG
MẢNG 2 CHIỀU
MẢNG 1 CHIỀU
Sub thu()
Dim A (5)
A(0) = 2
A(1) = 3
A(2) = 4
A(3) = 6
A(4) = 7
A(5) = 8
C= A(1) + A(5)
Msgbox C
End Sub
MẢNG HAI CHIỀU
Dim A (2,2)
A(0,0) = 3
A(0,1) = 4
A(0,2) = 6
A(1,0) = 6
A(1,1) = 8
A(1,2) = 8
A(2,0) = 6
A(2,1) = 8
A(2,2) = 8
NHẬP DỮ LIỆU CHO MẢNG
Sub nhapdulieu
Dim A(10)
tong = 0
for i = 1 to 10
tong = tong + i
A(i) = tong
cells(3,i)=A(i)
next i
End Sub
CỘT LỆCH TÂM PHẲNG NHIỀU
LỚP CỐT THÉP
N Rbbx i Ai
M * 0.5Rbbx(h x) i Ai yi
CỘT LỆCH TÂM PHẲNG NHIỀU
LỚP CỐT THÉP
N Rbbx i Ai M * 0.5Rbbx(h x) i Ai yi
0.008Rb
x
i Chiều cao tương đối của vùng betong chịu nén
hoi
Theo công thức trên thì tính được σi > 0 (ứng suất kéo) , σi < 0 ứng suất nén, và giá
trị σi nằm giữa –Rs < σi < Rs
CỘT LỆCH TÂM PHẲNG NHIỀU
LỚP CỐT THÉP
CỘT LỆCH TÂM PHẲNG NHIỀU
LỚP CỐT THÉP
b h
( , ) b h
2 2 ( , )
2 2
b h
( , ) b h
( , )
2 2 2 2
CỘT LỆCH TÂM PHẲNG NHIỀU
LỚP CỐT THÉP
Khi đã có tạo độ các thanh
thép ta tính được ho – là
khoảng cách từ các thanh
thép đến mép chịu nén
For i = 1 to 1000
nuy1=nuy (giả sử)
[ Khối lệnh ]
=> nuy2
If Abs(nuy2 - nuy1) / nuy1 < 0.01 Then
nuy = nuy2
Exit For
Else
nuy = (nuy1 + nuy2) / 2
End If
Next i
CỘT LỆCH TÂM PHẲNG
TÍNH TOÁN CỐT THÉP ( giải quyết vòng lặp thỏa )
TS = 0.05
Do while TS > 0.01
nuy1=nuy (giả sử)
[ Khối lệnh ]
=> nuy2
TS = Abs(nuy2 - nuy1) / nuy1
nuy=(nuy2+nuy1)/2
Loop
CỘT LỆCH TÂM PHẲNG
VẼ BIỂU ĐỒ TƯƠNG TÁC:
NẮM THÊM 1 SỐ
CÔNG THỨC PHỤ TRỢ
TÍNH TOÁN DẦM
VỚI KẾT QUẢ XUẤT TỪ ETABS
MẢNG 1 CHIỀU
MẢNG
MẢNG 2 CHIỀU
MẢNG- MẢNG 1 CHIỀU
Sub thu()
Dim A (5)
A(0) = 2
A(1) = 3
A(2) = 4
A(3) = 6
A(4) = 7
A(5) = 8
C= A(1) + A(5)
Msgbox C
End Sub
MẢNG- MẢNG 2 CHIỀU
Dim A (2,2)
A(0,0) = 3
A(0,1) = 4
A(0,2) = 6
A(1,0) = 6
A(1,1) = 8
A(1,2) = 8
A(2,0) = 6
A(2,1) = 8
A(2,2) = 8
CODE PHỤ TRỢ
CODE PHỤ TRỢ (XÓA DỮ LIỆU)
B=0
For Each clls In vung
B=B+1
Next clls
sohang=B
End Function
TÍNH TOÁN DẦM
VỚI KẾT QUẢ XUẤT TỪ ETABS
Dim tang(100)
Dim B As Integer, trung As Boolean, A As Integer
B=0
For Each clls In vung
Next clls
End Function
TÍNH TOÁN DẦM
VỚI KẾT QUẢ XUẤT TỪ ETABS
VIẾT HÀM ĐẾM SỐ TẦNG , SỐ DẦM
Function gtkhacnhau(vung As Range) As Integer
Dim tang(100)
Dim B As Integer, trung As Boolean, A As Integer
B=0
For Each clls In vung
SO SÁNH LƯU DỮ
trung = True
LIỆU
For A = 0 To 100
If trung = True Then
If tang(A) = clls Then
tang(B) = clls
trung = False B=B+1
Exit For End If
End If
Next A
Next clls
End Function
TÍNH TOÁN DẦM
VỚI KẾT QUẢ XUẤT TỪ ETABS
COPY DỮ LIỆU SANG 1 SHEET KHÁC
Dim tang(100)
Dim B As Integer, trung As Boolean, A As
Integer
B=0
For Each clls In vung
trung = True
If trung = True Then
For A = 0 To 100 tang(B) = clls
If tang(A) = clls Then B=B+1
[ COPY ]
trung = False End If
Exit For COPY
End If
Next A
Worksheets("sheet2").Activate
Cells(B + m, n) = tang(B)
Next clls
Function gtkhacnhau(vung As Range) As Integer
Dim tht(100)
Dim cottht As Range
Dim B As Integer, trung As Boolean, A As Integer
B=0
For Each clls In vung
trung = True
For A = 0 To 100
If tht(A) = clls Then
trung = False
Exit For
End If
Next A
NỘI DUNG
Sub sudung()
sdsudung = ActiveSheet.UsedRange.Rows.Count
MsgBox sdsudung
End sub
NẮM VỮNG CODE PHU TRỢ
Code copy
CHỌN
vi dụ SHEET ĐỂ
Sub copy() THỰC HIỆN
Worksheets (“sheet2”).activate
Range(cells(1,1), cells(21,1)).select COPY QUA
SHEET KHÁC
Selection.copy
Worksheets(“sheet3”).activate
Range(cells(1,4), cells(21,4)).select
Activesheet.paste
End sub
LẤY DỮ LIỆU CHO DẦM
Worksheets(“sheet2”).activate
A=tang&dam
For i = batdau to ketthuc
Worksheets(“sheet1”).activate
B=tang&dam
if A=B then
dongbatdau=i
Exit for
End if
Next I
For j = dongbatdau to kethuc
Worksheets(“sheet1”).activate
B=tang&dam
if A <> B then
dongkethuc = j
Exit for
End if
Next j
GIỚI THIỆU NHỮNG THAO TÁC
TRÊN USER FORM
GIỚI THIỆU NHỮNG THAO TÁC
TRÊN USER FORM
TẠO CHƯƠNG TRÌNH TÍNH TOÁN ĐƠN GIẢN
ví dụ 1 : TINH
Làm quen với label, textbox, và command Button
Đóng mở user form từ giao diện excel
ĐỐI TÊN TIỀN MÔ TẢ
TƯỢNG TỐ
label lbl dùng để ghi một dòng chữ vào 1 form
textbox txt dùng để hiển thị dữ liệu hoặc nhập dữ liệu vào chương trình
a = Val(txta.Text)
b = Val(txtb.Text)
c=a+b
txtc.Text = c
End Sub
MỐI LIÊN HỆ GIỮA GIAO DIỆN
EXCEL VÀ USER FORM
Tạo command button gọi user form
Sub GOI()
TINH.Show
End Sub
Tắt usetform
Tên userform.Hide
MỐI LIÊN HỆ GIỮA GIAO DIỆN
EXCEL VÀ USER FORM
e eo 0.5 h a x
N
Rb b
1
8
l /b x 2a ' x R ho x 2a '
8
N (e ho a ') N (e ho x / 2)
1 R
1 As
As
x1 R ho R 's (ho a ')
N R 's (ho a ')
1 1 ( o )2
e
N th
ho
x1 ho x1 ho
(%)
Ne Rbbho (ho / 2) Ne Rbbx1 (ho x / 2)
As As ' As As '
J b b12
h
J s ut bho (h / 2 a) 2 Rs (ho a ') R 's (ho a ')
3
As As ' ( 1)
1 100%
6.4 S bho
Nth 2 Eb J b Es J s
lo Kdh
5%
LƯU ĐỒ TÍNH CỐT THÉP BẤT ĐỐI XỨNG CHO CỘT
e eo 0.5 h a x R ho
As ' 0 As ' 0
1
8
As ' min bho R Rbbho N Rs As '
l /b As
Rs
N e Rs As '(ho a ')
1
8 1
N Rbbho 2
N th
1 1 2
(%)
x1 ho
2a ' 2a '
J b b12
h
J s ut bho (h / 2 a) 2
3
BƯỚC 1: Sau khi tính được diện tích cốt thép cho
cột, chọn và bố trí cốt thép phù hợp
BƯỚC 2: tuần tự tính các đại lượng không thứ
nguyên sau
N Neo Rs As
N M
Rb bho Rbbh 2 o Rb bho
Rs ' As ' a' a
' '
Rb bho ho ho
LẬP BIỂU ĐỒ TƯƠNG TÁC
Sau khi tính được các đại lượng không thứ nguyên
N Neo Rs As Rs ' As ' a' a
N M ' '
Rbbho Rbbho Rb bho Rb bho ho ho
Với sự biến đổi =x/ho, lập các giá trị dể vẽ biều đồ tương tác
N M
N
2a '
N ' M (1 ') (1 2 ')
ho 2
2a ' N
ho
R N ' M (1 ) (1 ') ' (1 )
2 2
1 R 2 N
R 1 N ' M (1 ) (1 ') ' (1 )
1 R 2 2
N
1 1 N ' M (1 ) (1 ') ' (1 )
2 2
LẬP BIỂU ĐỒ TƯƠNG TÁC
CỐT THÉP ĐỐI XỨNG CỐT THÉP BẤT ĐỐI XỨNG