Hàm tự tạo không tự tính kết quả (2 người xem)

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

Excel365

Thành viên tích cực
Tham gia
29/10/10
Bài viết
865
Được thích
127
Giới tính
Nam
Em có hàm tự tạo như bên dưới, không hiểu sao nhiều lúc thì nó tự tính kết quả, nhiều lúc thì phải double click vo nó mới tính. Nhờ các anh chị giúp em tìm nguyên nhân
[GPECODE=VB]Function CDphi(ByVal S_ghichu As String, ByVal d_Heso As Double) As Long Application.Volatile
If S_ghichu <> "Chuy" & ChrW(7875) & "n" And S_ghichu <> "Ngh" & ChrW(7881) & " vi" & ChrW(7879) & "c" And d_Heso > 0 Then
CDphi = c_CDphi
Else
CDphi = 0
End If
End Function[/GPECODE]
 
Em có hàm tự tạo như bên dưới, không hiểu sao nhiều lúc thì nó tự tính kết quả, nhiều lúc thì phải double click vo nó mới tính. Nhờ các anh chị giúp em tìm nguyên nhân
[GPECODE=VB]Function CDphi(ByVal S_ghichu As String, ByVal d_Heso As Double) As Long Application.Volatile
If S_ghichu <> "Chuy" & ChrW(7875) & "n" And S_ghichu <> "Ngh" & ChrW(7881) & " vi" & ChrW(7879) & "c" And d_Heso > 0 Then
CDphi = c_CDphi
Else
CDphi = 0
End If
End Function[/GPECODE]
thử bỏ dòng lệnh application.volatile đi hoặc
cho xin hẳn 1 file đính kèm code luôn cho dễ hình dung bạn ơi !
 
Upvote 0
thử bỏ dòng lệnh application.volatile đi hoặc
cho xin hẳn 1 file đính kèm code luôn cho dễ hình dung bạn ơi !
Code trên lúc thì tự tính kết quả lúc thì không tính kết quả, báo lỗi Value, phải double click vô thi kết quả mới tính.
 

File đính kèm

Upvote 0
Code trên lúc thì tự tính kết quả lúc thì không tính kết quả, báo lỗi Value, phải double click vô thi kết quả mới tính.

Tôi nghĩ hàm thế này mới đúng:
Mã:
Const c_CDphi = 11500
Function CDphi(ByVal S_ghichu As String, ByVal d_Heso) As Long
  Dim dHS As Double
  Dim s1 As String, s2 As String, sGC As String
  s1 = "CHUY" & ChrW(7874) & "N"
  s2 = "NGH" & ChrW(7880) & " VI" & ChrW(7878) & "C"
  On Error Resume Next: dHS = CDbl(d_Heso): On Error GoTo 0
  sGC = UCase(S_ghichu)
  If sGC <> s1 And sGC <> s2 And dHS > 0 Then CDphi = c_CDphi
End Function
- Thứ nhất: Bạn cố tình khai báo biến d_Heso dạng Double. Vậy nếu bạn tham chiếu đến 1 cell dạng chuỗi thì hàm sẽ lỗi VALUE
- Thứ hai: Biến S_ghichu bạn gán như vậy là không ổn, sẽ cho kết quả sai khi người ta gõ HOA thường không đúng quy định. (so sánh chuỗi trên bảng tính đa phần là không phân biệt HOA thường)
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom