Lỗi khi viết code

Liên hệ QC

khanhhoan

Thành viên chính thức
Tham gia
15/4/08
Bài viết
99
Được thích
36
Nghề nghiệp
Sinh viên
Em mới học VBA, làm 1 hàm để tách tên nhưng khi viết xong code và sử dụng hàm thì ô chứa hàm bị màu trắng (Không hiển thị gì), không biết lý do tại sao. Mong các a/c trên diễn đàn giải đáp dùm. Em có gửi file đính kèm theo.
 

File đính kèm

Em mới học VBA, làm 1 hàm để tách tên nhưng khi viết xong code và sử dụng hàm thì ô chứa hàm bị màu trắng (Không hiển thị gì), không biết lý do tại sao. Mong các a/c trên diễn đàn giải đáp dùm. Em có gửi file đính kèm theo.
Sai 3 chổ:
1>
Public Function tachten(hoveten As String) As String
......
.......
hvt = Trim(hovaten)

-----------------------------
2>
If Left(Right(hvt, i), 1) = "" Then
Lý ra phải là
If Left(Right(hvt, i), 1) = " " Then
-----------------------------
3>
tachten = Right(hvt, i)
lý ra phải là:
tachten = Right(hvt, sotu - i)
-----------------------------
Giá như bạn có dòng Option Explicit ở đầu code thì đã phát hiện sai ngay lập tức rồi
-----------------------------
Đây chỉ là xử lý lỗi chứ thật ra, TACHTEN chẳng ai viết code kiểu vậy bao giờ
 
Upvote 0
Em đã sửa lại và thử thêm Exit Function vào trước end if thì tachten = Right(hvt, i) là đúng, còn nếu bỏ exit function đi thì tachten = Right(hvt,sotu- i) mới là đúng. Tại sao lại thế ah?
 
Upvote 0
Em đã sửa lại và thử thêm Exit Function vào trước end if thì tachten = Right(hvt, i) là đúng, còn nếu bỏ exit function đi thì tachten = Right(hvt,sotu- i) mới là đúng. Tại sao lại thế ah?
- Phải là tachten = Right(hvt, i-1) mới đúng ==> Exit Function vì lúc tìm được khoảng trống thì ngừng biến I ==> tên sẽ bằng Right (hvt, I-1)
- Nếu không Exit Function hoặc Exit For thì biến I tiếp tục chạy và nó sẽ ngừng khi gặp khoảng trống cuối cùng nên phải bằng Right(hvt,sotu-i)
 
Upvote 0
Bạn không nên viết như vày:
Public Function tachten(hoveten As String) As String
Dim sotu As Integer
Dim i As Integer
Dim hvt As String
hvt = Trim(hovaten)
sotu = Len(hvt)
For i = 1 To sotu
If Left(Right(hvt, i), 1) = "" Then
tachten = Right(hvt, i)
End If
Next i
End Function

Mà nên viết như vầy:
PHP:
Option Explicit
Public Function TachTen(HovaTen As String) As String
 Dim SoTu As Integer, jJ As Integer
 Dim HvT As String

 HvT = Trim(HovaTen)
 SoTu = Len(HvT)
 For jJ = 1 To SoTu
   If Left(Right(HvT, jJ), 1) = "" Then
      TachTen = Right(HvT, jJ)
   End If
 Next jJ
End Function

Điều này theo mình là quan trọng cho những người mới bắt đầu tự học về VBA.
Với cách viết như vậy ta sẽ ngừa hầu hết các lỗi chính tả không đáng có.

Và đó là cách viết code thân thiện với môi trường đó bạn!
 
Upvote 0
Web KT

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

Back
Top Bottom