Sao không thiếu End If

Liên hệ QC

conglong2008

Thành viên mới
Tham gia
13/10/07
Bài viết
14
Được thích
2
Nếu như bình thường, sử dụng cấu trúc điều khiển If ... . Then ....End If thì luôn kết thúc bằng End If
Thì đoạn hướng đẫn học lập trình VB Excel lại không kết thúc bằng End If
Sub SuDung_UsedRange()

Dim strD As String, bcCel As Range

For Each bcCell In ActiveSheet.UsedRange
If bcCell.Value < 0 Then strD = strD & bcCell.Address & ","
Next

If strD <> "" Then
strD = Left(strD, Len(strD) - 1)
ActiveSheet.Range(strD).Select
End If
End Sub​

Ở cấu trúc điều khiển thứ nhất : If bcCell.Value < 0 Then strD = strD & bcCell.Address & ","
lại không có End If để kết thúc.
)*&^)Đây có phải là thiếu ? Hay là đủ rồi, bởi khi Run chương trinh không báo lỗi. @!##Còn nếu thêm End If thì khi Run thì có báo lỗi: "Compile error:End If without block If"
|||||- Nếu như thế khi nào thì không cần End If ? xin các bác giải thích giúp
 
Chỉnh sửa lần cuối bởi điều hành viên:
cấu trúc trên đúng rồi bạn ơi.

Nếu như cấu trúc "If dk then" trả về chỉ một phép tính thì ta dùng cấu trúc thu gọn :
If dk then kq

Nếu như cấu trúc If dk then trả về nhiều hơn một phép tính thì ta bắt buộc phải dùng cấu trúc :
If dk then
kq1
kq2
...
End if
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn NDU, vì lâu nay tôi cứ nghĩ là sau THEN có nhiều lệnh thì phải xuống dòng và phải có END IF
Cũng xin lưu ý là khi cú pháp của lệnh IF, nên là
IF Đk Then CL1: CL2
chứ KQ1, KQ2 không chính xác.

Nó khác với hàm IF(đk, KQ1, KQ2) hoặc IF(đk, Công thức 1, công thức 2)
 
Upvote 0
Cảm ơn NDU, vì lâu nay tôi cứ nghĩ là sau THEN có nhiều lệnh thì phải xuống dòng và phải có END IF
Cũng xin lưu ý là khi cú pháp của lệnh IF, nên là
IF Đk Then CL1: CL2
chứ KQ1, KQ2 không chính xác.

Nó khác với hàm IF(đk, KQ1, KQ2) hoặc IF(đk, Công thức 1, công thức 2)
Sao quá cố chấp vậy,
Tôi không nghĩ KQ hay CL là quan trọng vì CL cũng sẽ dẫn đến KQ mà, viết thử đoạn này vào đâu đó xem:
IF [A1]= "Bùm" Then [B1]= "Tôi chết" : [C1]= "Anh cũng chết"
[B1] = "Tôi chết" có thể hiểu là CL cũng có thể hiểu là KQ chứ phải không?
 
Lần chỉnh sửa cuối:
Upvote 0
Viết trên 1 dòng và không End If cũng được luôn
PHP:
If dk then kq1: kq2

Viết trên "nhiều" dòng và không End If cũng vẫn được luôn (áp dụng khi các câu lệnh dài quá tầm quan sát) Ẹc...Ẹc
Mã:
Sub dota()
If [a5] = "do" Then _
    [b5] = "anh can": _
    [c6] = "toi can": _
    [d7] = "giot tiep"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sao quá cố chấp vậy,
Tôi không nghĩ KQ hay CL là quan trọng vì CL cũng sẽ dẫn đến KQ mà, viết thử đoạn này vào đâu đó xem:
IF [A1]= "Bùm" Then [B1]= "Tôi chết" : [C1]= "Anh cũng chết"
[B1] = "Tôi chết" có thể hiểu là CL cũng có thể hiểu là KQ chứ phải không?

Kể ra thì đúng là quá cố chấp.

Nhưng cẩn thận vẫn hơn. Ta với nhau thì đều hiểu. Nhưng với người mới thì có thể anh đã gặp:
- sinh viên nhập 2 nháy đơn và coi đó là 1 nháy kép (trên excel, 2 nháy đơn có hình ảnh rất gần với 1 nháy kép)
- dùng chữ o hoặc O thay cho số 0

Và nói đúng thì [a1] = "ai cũng chết" là câu lệnh gán.
 
Upvote 0
Web KT
Back
Top Bottom