Đăng ký học Excel chuyên đề công thức dò tìm và tham chiếu (tối 29 và 31/8) - TPHCM

Đăng ký học VBA và ADO - 3 chủ nhật 10, 17 và 24/9 - TPHCM

Nhờ các anh chị sửa giúp code VBA bị lỗi else without if

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi vantuqvna, 12 Tháng tám 2017.

  1. vantuqvna

    vantuqvna Thành viên mới

    Mã:
    Sub q1()
        Sheets("DANHMUC").Select
        n = Range("B5:G504").Value
        Sheets("NHAP").Select
        For i = 3 To 72
            If Application.WorksheetFunction.VLookup(Cells(i, 2), n, 3, 0) = False Then Cells(i, 3) = 0
            Else
                Cells(i, 3) = Application.WorksheetFunction.VLookup(Cells(i, 2), n, 3, 0)
            End If
            If Application.WorksheetFunction.VLookup(Cells(i, 2), n, 5, 0) = False Then Cells(i, 6) = 0
                Else
                Cells(i, 6) = Application.WorksheetFunction.VLookup(Cells(i, 2), n, 5, 0)
            End If
            If Application.WorksheetFunction.VLookup(Cells(i, 2), n, 6, 0) = False Then Cells(i, 7) = 0
                Else
                Cells(i, 7) = Application.WorksheetFunction.VLookup(Cells(i, 2), n, 6, 0)
            End If
        Next
    End Sub
    chào các anh chị trên GPE,
    mình bị lỗi else without if,
    Nhờ sửa giùm với ạ.
     
    Lần chỉnh sửa cuối: 12 Tháng tám 2017
  2. befaint

    befaint |||||||||||||

    Thấy bạn này chịu khó học ghê, 1-2 giờ sáng vẫn vào đọc...
    ------------
    Khi If dieu_kien Then ket_qua viết trên cùng một dòng thì không cần End If, tức là đã kết thúc cấu trúc If Then rồi.

    Vậy:
    If Application.WorksheetFunction.VLookup(Cells(i, 2), n, 3, 0) = False Then Cells(i, 3) = 0
    đã kết thúc cấu trúc If - Then rồi;
    Dòng kế tiếp mà viết Else thì phía trước không có cái If nào được bắt đầu cả.
    ==> Báo lỗi else without if.

    Sửa với bài trên: Ngắt dòng lệnh ngay sau Then, tức là:
    PHP:
    If Application.WorksheetFunction.VLookup(Cells(i2), n30) = False Then
             Cells
    (i3) = 0
    Else
             
    Cells(i3) = Application.WorksheetFunction.VLookup(Cells(i2), n30)
    End If
    ------------
    Khi cần lấy giá trị từ bảng tính thì ta viết chính tắc, chỉ đích danh địa chỉ cần lấy từ workbook/worksheet/range.
    Không dùng phương thức Sheet.Select làm code chậm, màn hình nháy nháy... trừ khi cần điều khiển sheet với mục đích khác(...).
    Chỉ chỉnh lại code trên về cách viết:
    PHP:
    Sub q1()
        
    Dim n
        n 
    Sheets("DANHMUC").Range("B5:G504").Value
        With Sheets
    ("NHAP")
        For 
    3 To 72
            
    If Application.WorksheetFunction.VLookup(.Cells(i2), n30) = False Then
                
    .Cells(i3) = 0
            
    Else
                .
    Cells(i3) = Application.WorksheetFunction.VLookup(.Cells(i2), n30)
            
    End If
            If 
    Application.WorksheetFunction.VLookup(.Cells(i2), n50) = False Then
                
    .Cells(i6) = 0
            
    Else
                .
    Cells(i6) = Application.WorksheetFunction.VLookup(.Cells(i2), n50)
            
    End If
            If 
    Application.WorksheetFunction.VLookup(.Cells(i2), n60) = False Then
                
    .Cells(i7) = 0
            
    Else
                .
    Cells(i7) = Application.WorksheetFunction.VLookup(.Cells(i2), n60)
            
    End If
        
    Next i
        End With
    End Sub
     
    Lần chỉnh sửa cuối: 12 Tháng tám 2017
    nguyendinhtutw, huonglien1901vantuqvna thích bài viết này.
  3. vantuqvna

    vantuqvna Thành viên mới

    mình làm được rồi, Thank bạn befaint nhiều nhá.
    mình mới bắt đầu tìm hiểu nên nhiều cái không biết lắm, có gì mọi người giúp đỡ e với...
     
  4. befaint

    befaint |||||||||||||

    Mới bắt đầu thì cần tìm tài liệu đọc từ cái căn bản, cái định nghĩa, thuộc tính, phương thức... sao cho quy củ, đặc biệt là đọc Help.

    Hoặc tham gia khóa học nào đó.
     
    nguyendinhtutw thích bài này.

Chia sẻ trang này