hiepga2612
Thành viên mới

- Tham gia
- 3/4/16
- Bài viết
- 15
- Được thích
- 1
Mình hiện là SV 3 chuyên ngành Xây Dựng trường ĐHSPKT TP.HCM
Mình tìm được Hàm Function tính cột như sau
Nhưng khi mình chuyển thành sub CMD như thế này lại ko được, ko biết sai lỗi nào pác nào giúp mình với
Mình tìm được Hàm Function tính cột như sau
Mã:
Function Ascolumn(n, m, b, h, Rb, Eb, Rs, Es, l) xiR = (0.85 - 0.008 * Rb) / ((1 + (Rs / 400) * (1 - ((0.85 - 0.008 * Rb) / 1.1))))
If h / 10 < 50 Then a = 50 Else a = h / 10
ho = h - a
Rsc = Rs
n = Abs(n)
m = Abs(m)
'-------------------------------
' Chieu dai tinh toan lo =w * l
lo = 0.7 * l * 1000
'-------------------------------
' Do lech tam tinh hoc e1 =M/N
e1 = m * 1000 / n
'--------------------------------
' Do lech tam ngau nhien ea = max (l/600 ; h/30)
If l * 1000 / 600 > h / 30 Then ea = l * 1000 / 600 Else ea = h / 30
'---------------------------------
' Do lech tam ban dau eo:
' + eo = max (e1 ; ea) ; he sieu tinh.
' + eo = e1 + ea ; he tinh dinh.
If e1 > ea Then eo = e1 Else eo = ea
'---------------------------------
'Tinh luc can toi han Ncr
' Ncr = (6.4*Eb/lo^2)*(S*I/fil +anfa*Is)
'-----------------------------------
'+ Monment quan tinh cua tiet dien
i = b * h ^ 3 / 12
'-----------------------------------
u = 2
utt = 2
Do
u = (u + utt) / 2
'+ Monment quan tinh cua cot thep
iss = (u / 100) * b * ho * (0.5 * h - a) ^ 2
'-----------------------------------
anfa = Es / Eb
'-----------------------------------
' Tinh S = (0.11 / (0.1 + (tetae / fip))) + 0.1
fip = 1 ' betong thuong
tetamin = 0.5 - 0.01 * (lo / h) - 0.01 * Rb
' tetae = max ( eo/h ; tetamin)
If eo / h > tetamin Then tetae = eo / h Else tetae = tetamin
S = (0.11 / (0.1 + (tetae / fip))) + 0.1
'-----------------------------------
' He so anh huong cua uon doc
' fil = 1 + beta*[(Mdh + Ndh*h/2)/(M + N*h/2)] + 1
' beta = 1
fil = 2
'-------------------------------------
Ncr = (6.4 * Eb / lo ^ 2) * (S * i / fil + anfa * iss) * 10 ^ -3
'----------------------------------------------------------------------------------------
nuy = 1 / (1 - n / Ncr)
'----------------------------------------------------------------------------------------
e = nuy * eo + h / 2 - a
'----------------------------------------------------------------------------------------
' Tinh toan cot thep
X1 = (n * 1000) / (Rb * b)
'+ Neu x1 < 2*a NLT lon dac biet:
'* xichmab = Rb
'* xichmaS = Rs
'* xichmaSC < Rsc
'As = N*(nuy * eo -h/2 +a')/Rs*(ho-a')
'+ Neu 2a' <= x1 <= (xiR *ho) NLT lon:
'* xichmab = Rb
'* xichmaS = Rs
'* xichmaSC = Rsc
'As = [Ne- Rb*b*x1*(ho - x1/2)]/[Rsc*(ho-a')]
'=N*(e-ho+x1/2)/Rs(ho-a')
'+ Neu x1 >(xiR * ho) NLT be
'* xichmab = Rb
'* xichmaS < Rs
'* xichmaSC = Rsc
'x2 = {[(1 - xiR) * gamaA * v+ 2*xiR*(v*epxilon-0.48)]ho}/[(1-xiR)*gamaA + 2(v*epxilon - 0.48)]
'As = [Ne- Rb*b*x2*(ho - x2/2)]/[Rsc*(ho-a')]
'------------------------------------------------------------------------------------
Select Case X1
Case Is < 2 * a ' NLT lon dac biet
thep = n * 1000 * (nuy * eo - h / 2 + a) / (Rs * (ho - a) * 100)
'------------------------------------------------------------------------------------
Case 2 * a To xiR * ho ' NLT lon
thep = (n * 1000 * e - Rb * b * X1 * (ho - X1 / 2)) / (Rsc * (ho - a) * 100)
'------------------------------------------------------------------------------------
Case Is > xiR * ho ' NLT be
v = n * 1000 / (Rb * b * ho)
epxilon = e / ho
gamaA = (ho - a) / ho
x3 = (((1 - xiR) * gamaA * v + 2 * xiR * (v * epxilon - 0.48)) * ho) / ((1 - xiR) * gamaA + 2 * (v * epxilon - 0.48))
Select Case x3
Case Is > ho
X2 = ho
Case Is < xiR * ho
X2 = xiR * ho
Case Else
X2 = x3
End Select
thep = (n * 1000 * e - Rb * b * X2 * (ho - 0.5 * X2)) / (Rsc * (ho - a) * 100)
'------------------------------------------------------------------------------------
End Select
utt = (2 * 10000 * thep) / (b * ho)
If u > utt Then Min = utt Else Min = u
Loop Until (Abs(u - utt) / Min) < 0.01
Ascolumn = Round(thep, 2)
End Function
Nhưng khi mình chuyển thành sub CMD như thế này lại ko được, ko biết sai lỗi nào pác nào giúp mình với
Mã:
Private Sub TT_Click()'-------------------Function Ascolumn(n, m, b, h, Rb, Eb, Rs, Es, l)
i = 10
While Sheet5.Cells(i, "A") <> 0
n = Abs(Sheet5.Cells(i, "D"))
m = Abs(Sheet5.Cells(i, "E"))
Rb = Sheet5.Cells(2, "B")
Rs = Sheet5.Cells(2, "D")
Eb = Sheet5.Cells(2, "H")
Es = Sheet5.Cells(2, "J")
b = Sheet5.Cells(i, "F")
h = Sheet5.Cells(i, "G")
l = Sheet5.Cells(i, "I")
xiR = (0.85 - 0.008 * Rb) / ((1 + (Rs / 400) * (1 - ((0.85 - 0.008 * Rb) / 1.1))))
If h / 10 < 50 Then a = 50 Else a = h / 10
ho = h - a
Rsc = Rs
'-------------------------------
' Chieu dai tinh toan lo =w * l
lo = 0.7 * l * 1000
'-------------------------------
' Do lech tam tinh hoc e1 =M/N
e1 = m * 1000 / n
'--------------------------------
' Do lech tam ngau nhien ea = max (l/600 ; h/30)
If l * 1000 / 600 > h / 30 Then ea = l * 1000 / 600 Else ea = h / 30
'---------------------------------
If e1 > ea Then eo = e1 Else eo = ea
'-----------------------------------
'+ Monment quan tinh cua tiet dien
i = b * h ^ 3 / 12
'-----------------------------------
u = 2
utt = 2
Do
u = (u + utt) / 2
'+ Monment quan tinh cua cot thep
iss = (u / 100) * b * ho * (0.5 * h - a) ^ 2
'-----------------------------------
anfa = Es / Eb
'-----------------------------------
fip = 1 ' betong thuong
tetamin = 0.5 - 0.01 * (lo / h) - 0.01 * Rb
If eo / h > tetamin Then tetae = eo / h Else tetae = tetamin
S = (0.11 / (0.1 + (tetae / fip))) + 0.1
fil = 2
'-------------------------------------
Ncr = (6.4 * Eb / lo ^ 2) * (S * i / fil + anfa * iss) * 10 ^ -3
'----------------------------------------------------------------------------------------
nuy = 1 / (1 - n / Ncr)
'----------------------------------------------------------------------------------------
e = nuy * eo + h / 2 - a
'----------------------------------------------------------------------------------------
' Tinh toan cot thep
X1 = (n * 1000) / (Rb * b)
'------------------------------------------------------------------------------------
Select Case X1
Case Is < 2 * a ' NLT lon dac biet
thep = n * 1000 * (nuy * eo - h / 2 + a) / (Rs * (ho - a) * 100)
'------------------------------------------------------------------------------------
Case 2 * a To xiR * ho ' NLT lon
thep = (n * 1000 * e - Rb * b * X1 * (ho - X1 / 2)) / (Rsc * (ho - a) * 100)
'------------------------------------------------------------------------------------
Case Is > xiR * ho ' NLT be
v = n * 1000 / (Rb * b * ho)
epxilon = e / ho
gamaA = (ho - a) / ho
x3 = (((1 - xiR) * gamaA * v + 2 * xiR * (v * epxilon - 0.48)) * ho) / ((1 - xiR) * gamaA + 2 * (v * epxilon - 0.48))
Select Case x3
Case Is > ho
X2 = ho
Case Is < xiR * ho
X2 = xiR * ho
Case Else
X2 = x3
End Select
thep = (n * 1000 * e - Rb * b * X2 * (ho - 0.5 * X2)) / (Rsc * (ho - a) * 100)
'------------------------------------------------------------------------------------
End Select
utt = (2 * 10000 * thep) / (b * ho)
If u > utt Then Min = utt Else Min = u
Loop Until (Abs(u - utt) / Min) < 0.01
tinhthep = Round(thep, 2)
Sheet5.Cells(i, "K") = tinhthep
i = i + 1
Wend
End Sub