cần giúp sửa code tính k góc khi tính ứng suất móng (5 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

manhhung2412

Thành viên mới
Tham gia
19/4/09
Bài viết
4
Được thích
4
em đang làm cái đề tài tài về ứng suất dưới móng ...
và mù về vba -+*/
có đoạn code này(toàn bộ code thì ở trong file đính kèm,còn sai là ở trong chỗ này)
em hông bít sửa thế nào mong các bác giúp đỡ --=0

Mã:
Function ktong(ByVal r As Range, ByVal zm As Double, ByVal zt As Double, ByVal lm As Double, ByVal bm As Double, ByVal a As Double, ByVal b As Double) As Double
Dim c1, c2 As Integer
Dim k1, k2, k3, k4 As Double
 
    If (lm / 2 + a) >= (bm / 2 + b) Then
        k1 = noisuy(r(c1, c2), (lm / 2 + a) / (bm / 2 + b), (zt - zm) / (bm / 2 + b))
    ElseIf (lm / 2 + a) < (bm / 2 + b) Then
        k1 = noisuy(r(c1, c2), (bm / 2 + b) / (lm / 2 + a), (zt - zm) / (lm / 2 + a))
    End If
 
    If Abs(b - bm / 2) >= (lm / 2 + a) Then
        k2 = noisuy(r(c1, c2), Abs(b - bm / 2) / (lm / 2 + a), (zt - zm) / (lm / 2 + a))
    ElseIf (b - bm / 2) < (lm / 2 + a) Then
        k2 = noisuy(r(c1, c2), (lm / 2 + a) / Abs(b - bm / 2), (zt - zm) / Abs(b - bm / 2))
    End If
 
    If Abs(lm / 2 - a) >= (bm / 2 + b) Then
        k3 = noisuy(r(c1, c2), Abs(lm / 2 - a) >= (bm / 2 + b), (zt - zm) / (bm / 2 + b))
    ElseIf (lm / 2 - a) < (bm / 2 + b) Then
        k3 = noisuy(r(c1, c2), (bm / 2 + b) / Abs(lm / 2 - a), (zt - zm) / Abs(lm / 2 - a))
    End If
 
    If Abs(lm / 2 - a) >= Abs(b - bm / 2) Then
        k4 = noisuy(r(c1, c2), Abs(lm / 2 - a) / Abs(b - bm / 2), (zt - zm) / Abs(b - bm / 2))
    ElseIf Abs(lm / 2 - a) < Abs(b - bm / 2) Then
        k4 = noisuy(r(c1, c2), Abs(b - bm / 2) / Abs(lm / 2 - a), (zt - zm) / Abs(lm / 2 - a))
    End If
 
  If lm / 2 <= a And bm / 2 <= b Then
    ktong = k1 - k2 - k3 + k4
  ElseIf ((lm / 2) > a And (bm / 2) <= b) Or (lm / 2 <= a And bm / 2 > b) Then
    ktong = k1 - k2 + k3 - k4
  ElseIf (lm / 2) > a And (bm / 2) > b Then
     ktong = k1 + k2 + k3 + k4
  End If
End Function

và nếu có thể thì mong các bác giải thích luôn dùm em cái biến Double và Variant với ...}}}}}
 

File đính kèm

Bạn đã dùng bãy lỗi chưa vậy

Xin lỗi trước, rằng mình chưa xem file của bạn;
Nhưng thường để kiểm soát lỗi ta phải dùng bãy lỗi;

Bạn có thể đánh số cho các dòng lệnh; Sau đó dùng cơ cấu này để biết dòng lệnh nào gây lổi & đó là lỗi gì mới tính cách khắc phục có căn cơ được.
Ví dụ:
PHP:
Function ktong(ByVal r As Range, ByVal zm As Double, ByVal zt As Double, _
 ByVal lm As Double, ByVal bm As Double, ByVal a As Double, ByVal b As Double) As Double
 On Error Goto Loi_KT
Dim c1, c2 As Integer
1
 
3
 
5 
' . . . . .  '
 
Err_KT:      Exit Function
Li_KT:
  Select Case Err
 Case < 14
     MsgBox Error$:          Resume Next
Case < 99
    MsgBox  Error$,, Erl
End Select
    Resume Err_KT
End Function
 
Bạn ơi sửa được bản tính ko chưa cho lên mình dùng với nào. đang làm đồ án móng này nỗi suy ko lâu kinh khủng à
 
em đang làm cái đề tài tài về ứng suất dưới móng ...
và mù về vba -+*/
có đoạn code này(toàn bộ code thì ở trong file đính kèm,còn sai là ở trong chỗ này)
em hông bít sửa thế nào mong các bác giúp đỡ --=0

Function ktong(ByVal r As Range, ByVal zm As Double, ByVal zt As Double, ByVal lm As Double, ByVal bm As Double, ByVal a As Double, ByVal b As Double) As Double
Dim c1, c2 As Integer
Dim k1, k2, k3, k4 As Double

If (lm / 2 + a) >= (bm / 2 + b) Then
k1 = noisuy(r(c1, c2), (lm / 2 + a) / (bm / 2 + b), (zt - zm) / (bm / 2 + b))
ElseIf (lm / 2 + a) < (bm / 2 + b) Then
k1 = noisuy(r(c1, c2), (bm / 2 + b) / (lm / 2 + a), (zt - zm) / (lm / 2 + a))
End If

...

Bạn cần đưa giá trị hoặc cách tính cho 2 biến c1 và c2 thì hàm nội suy mới làm việc được. Trước mắt cứ thế đã rồi mới xét lỗi tiếp nếu có.
 
@:minhtu : cái c1,c2 là ở trong hàm noisuy.trong đó nó có xác định rồi mà.mí mình tưởng viết r(c1,c2) mà r là range thì lúc mình nhập r nó có c1,c2 rồi chứ !$@!!

@:thuantl1: nếu bạn cần ko thì bạn xóa bỏ cái phần hàm ktong đi,thay cái bảng tra kg= bảng tra ko.xem lại hàm và thay cho đúng số liệu đầu vào là đc.

mình có cái file tính ko này nhưng mờ bảng tra ko biết có chính xác ko nữa ... không phải mình nhập --=0 bạn xem lại nha
 

File đính kèm

Lần chỉnh sửa cuối:
vầng em xin luân với em cũng dang đồ án nền móng đây
 
@:minhtu : cái c1,c2 là ở trong hàm noisuy.trong đó nó có xác định rồi mà.mí mình tưởng viết r(c1,c2) mà r là range thì lúc mình nhập r nó có c1,c2 rồi chứ !$@!!

- Thứ nhất: Nếu c1, c2 được xác định trong hàm noisuy thì trong hàm ktong bạn không cần phải khai báo Dim c1, c2 ... nếu không dùng đến. Cái thừa này không quan trọng.

- Thứ hai: Do không xác định giá trị c1, c2 trong phần hàm ktong cho nên các hệ số k1,k2,k3,k4 của bạn viết là noisuy(r(c1, c2),... là không đúng mà bạn chỉ viết noisuy(r,... mà thôi.

- Thứ ba: Hàm nội suy của bạn chưa lường trước trường hợp vượt khỏi biên của bảng tra. Cụ thể ở đây là k2 sẽ được nội suy với l/b=14 mà max của bảng chỉ tra với l/b=10 cho nên nó gây lỗi, không tính được giá trị cuối cùng cho ktong.

Bạn sửa lại mấy cái đó là hết lỗi. Còn tính có đúng hay không thì mình không biết đâu nhá.
 
thx. bác đc rồi ^^
này thì 20 char ......
 
Mình vừa làm được bảng tra KO này anh em tham khảo nha
 

File đính kèm

@:HYen17 :bạn ơi cho mình hỏi là có bẫy nào bẫy đc lỗi phần công thức ko +-+-+-+
mình căng mắt ra nhìn kiếm đc có 1 lỗi ... tìm ko được chắc quẳng bỏ ko bảo vệ đề tài luôn quá //////
 
cái này là trong cơ đất mà.chỉ cần dùng hàm nội suy trong diễn đàn GPEX là ngon rùi sao cần pảhi viết lại làm gì nhỉ?chỉ cần hiểu hàm đó làm việc như thế nào rùi áp dụng vào bài làm cảu mình thôi?sao phải mệt vậy?
 
Sao bạn không tính K bằng công thức nhỉ?
Tra bảng làm gì cho mệt?
 
Web KT

Bài viết mới nhất

Back
Top Bottom