Xin giúp tìm lỗi code ạ (1 người xem)

Liên hệ QC

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

thuctien

Thành viên chính thức
Tham gia
26/2/08
Bài viết
84
Được thích
22
Xin chào các anh chị trong diễn đàn
Em đang tập VBA, muốn viết một hàm đảo ngược 1 chuỗi trong cell. Em viết code như bên dưới nhưng toàn bị lỗi #VALUE.
Phiền anh chị giải thích giúp em code em bị sai ở chỗ nào ạ

Public Function daochuoi(cell) As String
Dim i, n As Integer
n = Len(cell)
i = 1
daochuoi = ""
Do Until i > n
daochuoi = daochuoi + Mid(cell, n - i, 1)
i = i + 1
Loop
End Function
Em xin cảm ơn nhiều ạ.
 
Trong add-ins em đang cook có code sau:
Function DaoTen(hoten) As String
hoten = " " & Trim(hoten)
Do
vt = InStrRev(hoten, " ", Len(hoten))

DaoTen = DaoTen & Mid(hoten, vt + 1) & " "

hoten = " " & Trim(Left(hoten, vt - 1))

If hoten = " " Then Exit Do​
Loop​
End Function

Function DaoHoTen(hoten As String) As String
hoten = " " & Trim(hoten)​
If hoten = " " Then​
DaoHoTen = ""​
Else​
Do​
vt = InStrRev(hoten, " ", Len(hoten))​
tendao = tendao & Mid(hoten, vt)​
hoten = Left(hoten, vt - 1)​
If vt = 1 Then Exit Do​
Loop​
DaoHoTen = Trim(tendao)​
End If​
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào các anh chị trong diễn đàn
Em đang tập VBA, muốn viết một hàm đảo ngược 1 chuỗi trong cell. Em viết code như bên dưới nhưng toàn bị lỗi #VALUE.
Phiền anh chị giải thích giúp em code em bị sai ở chỗ nào ạ

Public Function daochuoi(cell) As String
Dim i, n As Integer
n = Len(cell)
i = 1
daochuoi = ""
Do Until i > n
daochuoi = daochuoi + Mid(cell, n - i, 1)
i = i + 1
Loop
End Function
Em xin cảm ơn nhiều ạ.


Vòng lặp của bạn chạy đến khi i=n thì Mid(cell,n-i,1) sẽ là Mid(cell,0,1) , không đúng thì phải.
bạn nên sửa lại:

Public Function daochuoi(cell) As String
Dim i, n As Integer
n = Len(cell)
i = 0
daochuoi = ""
Do Until i = n
daochuoi = daochuoi + Mid(cell, n - i, 1)
i = i + 1
Loop
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ, cảm ơn anh. Nhưng em muốn hỏi là hàm của em bị lỗi chỗ nào ạ. Và hàm của em là đảo ngược vị trí các ký tự trong một chuỗi chứ không phải đảo vị trí họ tên ạ.
 
Upvote 0
Vòng lặp của bạn chạy đến khi i=n thì Mid(cell,n-i,1) sẽ là Mid(cell,0,1) , không đúng thì phải.
bạn nên sửa lại:

Public Function daochuoi(cell) As String
Dim i, n As Integer
n = Len(cell)
i = 0
daochuoi = ""
Do Until i = n
daochuoi = daochuoi + Mid(cell, n - i, 1)
i = i + 1
Loop
End Function

Thật là tuyệt vời. Cảm ơn anh nhiều lắm. Đã được rồi anh ạ.
 
Upvote 0
Xin chào các anh chị trong diễn đàn
Em đang tập VBA, muốn viết một hàm đảo ngược 1 chuỗi trong cell. Em viết code như bên dưới nhưng toàn bị lỗi #VALUE.
Phiền anh chị giải thích giúp em code em bị sai ở chỗ nào ạ

Public Function daochuoi(cell) As String
Dim i, n As Integer
n = Len(cell)
i = 1
daochuoi = ""
Do Until i > n
daochuoi = daochuoi + Mid(cell, n - i, 1)
i = i + 1
Loop
End Function
Em xin cảm ơn nhiều ạ.
Vòng lập viết sai đã có người sửa rồi. Tuy nhiên bài này đơn giản hơn bạn nghĩ đó nha
Mã:
Function Daochuoi(ByVal Text As String) As String
  Daochuoi = StrReverse(Text)
End Function
Chỉ vậy là đủ, không cần Do loop gì cả
 
Upvote 0
Vòng lập viết sai đã có người sửa rồi. Tuy nhiên bài này đơn giản hơn bạn nghĩ đó nha
Mã:
Function Daochuoi(ByVal Text As String) As String
  Daochuoi = StrReverse(Text)
End Function
Chỉ vậy là đủ, không cần Do loop gì cả

có cái này anh chưa đọc kĩ nè


Giống kiểu các cụ dạy tin học ngày xưa biểu đi tìm số lớn nhất trong 1 mảng là để luyện cách sử dụng vòng lặp chứ chưa cho xài các hàm Min , Max . ha ha --=0--=0--=0
 
Upvote 0
Muón tập thì tập giải thuật.

Đảo nghịch chuỗi bằng cách hoán vị các ký tự ở 2 đầu. Lần vào trong cho đến giữa thì dừng.
 
Upvote 0
Web KT

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

Back
Top Bottom