Nhờ sửa lỗi cho đoạn code trên VB (3 người xem)

Liên hệ QC

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

slamdunk_269

Thành viên mới
Tham gia
11/6/14
Bài viết
3
Được thích
0
mình chạy đoạn code ở dưới đây mà cứ bị báo lỗi là else without if.Mọi người xem hộ xem bài của mình pải sửa chỗ nào với.

Option Explicit

Dim i As Integer
Dim t As Integer
Dim n As Integer
Dim p() As Currency
Sub loisuat4ngay()
n = Sheet2.Cells(1, 3)
ReDim p(2 To n + 1) As Currency
For i = 2 To n + 1 Step 1
p(i) = Sheet2.Cells(i, 1)
Next i
t = 0
For i = 2 To n + 1 Step 1
If t = 4 And i >= 5 Then t = 0: Sheet2.Cells(i, 5) = Log(p(i) / p(i - 4))
Else: t = t + 1
End If
Next i
End Sub
 
PHP:
Option Explicit
Dim i As Integer, t As Integer, n As Integer
Dim p() As Currency

Sub loisuat4ngay()
 n = Sheet2.Cells(1, 3)
 ReDim p(2 To n + 1) As Currency
 For i = 2 To n + 1 Step 1
    p(i) = Sheet2.Cells(i, 1)
 Next i
 t = 0
 For i = 2 To n + 1 Step 1
    If t = 4 And i >= 5 Then t = 0:              Sheet2.Cells(i, 5) = Log(p(i) / p(i - 4))
  'Lỗi dòng dưới này khi chưa có "If" mà đã viết "Else"' 
    Else:                t = t + 1    
    End If
 Next i
End Sub

Nên viết thật chân fương thì dễ fát hiện lỗi hơn!
 
Lỗi do bạn để t=0 cùng dòng với If, khi đó sau lệnh sheet2.... sẽ kết thúc If luôn. Đến đoạn sau gặp else sẽ báo lỗi.
Để sửa, bạn cần cho các lệnh sau Then xuống hàng dưới:
If t=4 and i>=5 then
t=0
sheet2.....
else
t=t+1
end if
 
Lần chỉnh sửa cuối:
mình sửa lại như bạn chỉ rồi ,mà khi chạy lại hiện ra lỗi này
1.png
 
aygu.Lần này lại bị lỗi type mismatch.mình đọc đi đọc lại mà ko biết lỗi ở đâu.các bạn kiểm tra hộ mình với.bài sửa lại của mình đây.


Option Explicit
Dim i As Integer, t As Integer, n As Integer
Dim p() As Currency
Sub loisuat4ngay()
n = Sheet2.Cells(1, 3)
ReDim p(2 To n + 1) As Currency
For i = 2 To n + 1 Step 1
p(i) = Sheet2.Cells(i, 1)
Next i
t = 0
For i = 2 To n + 1 Step 1
If t = 4 Then
t = 0
Sheet2.Cells(i, 5) = Log(p(i) / p(i - 4))
Else: t = t + 1
End If
Next i
End Sub
 
Thứ nhất: Bạn chưa cho biết lỗi được báo ở dòng nào;

Thứ hai, Cho dù bạn mới học hay đã thuộc lầu VBA, thì khi đưa code lên diễn đàn cần tận dụng chức năng của diễn đàn như dưới đây để mọi người trong cộng đồng dễ tiếp thu code của bạn:
PHP:
Option Explicit
Dim I As Integer, T As Integer, N As Integer
Dim p() As Currency
Sub loisuat4ngay()
 N = Sheet2.Cells(1, 3)
 ReDim p(2 To N + 1) As Currency
 For I = 2 To N + 1 Step 1
    p(I) = Sheet2.Cells(I, 1)
 Next I
 T = 0
 For I = 2 To N + 1 Step 1
    If T = 4 Then
        T = 0
        Sheet2.Cells(I, 5) = Log(p(I) / p(I - 4))
    Else:  T = T + 1
    End If
 Next I
End Sub

(3) Tốt nhất là tự mình tìm ra lỗi; bằng cách bãy lỗi để biết nó là Err số mấy & Erl dòng nào.
Bằng cách đem nó xuống fần cuối macro xử cho hết lỗi sẽ tiện

(*) Thực ra bạn đưa chỉ mã code lên đây, vậy ai mà biết được N (N nha, không như bạn là 'n') mang trị nào?
Lỡ ô Sheet2.Cells(1, 3) đang chưa dữ liệu dạng chuỗi thì sẽ fát sinh lỗi khác;
Nó là số âm hay biểu thức logic lại có thể sinh ra lỗi khác,. . . .
Nếu ngại đưa file lên do sợ tốn tài nguyên của mình, thì cũng nên chịu khó lập bảng, như

| A | B | C 2 |9||
3 |7||35
4 |..||)*&^)

Để người có nhã í giúp bạn còn biết đường mà lần chứ.

Vài lời cùng bạn; Nhân đây chúc bạn có tuần làm việc vui vẻ & mĩ mãn!
 
Web KT

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

Back
Top Bottom