Hỏi về Error Handling (1 người xem)

Liên hệ QC

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

sebastiantran

Thành viên mới
Tham gia
20/9/14
Bài viết
18
Được thích
6
Xin chào mọi người, mình đang muốn viết một đoạn macro bố cục như sau:
Mã:
For k = 1 to 100
If k thỏa mãn một yêu cầu then 
    Thực hiện một hàm WorksheetFunction với k (cụ thể làm hàm match)

   Thực hiện một số phép toán với k và kết quả của hàm trên
Else
End If
N

Trong trường hợp hàm WorksheetFunction không thực hiện được và báo lỗi 1004 mình muốn nhảy luôn đền End If

Vâỵ mình làm như sau có dc không:

Mã:
For k = 1 to 100
If k thỏa mãn một yêu cầu then 
On error goto [COLOR=#003366][FONT=Courier New]ErrHandler:[/FONT][/COLOR]
    Thực hiện một hàm WorksheetFunction với k (cụ thể làm hàm match)

   Thực hiện một số phép toán với k và kết quả của hàm trên
Else
[COLOR=#003366][FONT=Courier New]ErrHandler:[/FONT][/COLOR]
End If
N

Tks!
 
Mã:
Dim mat As Variant, r As Integer
For r = 1 To 100 Step 1
    mat = [COLOR=#ff0000][SIZE=3][B]Application[/B][/SIZE][/COLOR].Match(r, Sheet1.Range("A1:A100"), 0)
    If TypeName(mat) <> "Error" Then
        MsgBox mat
    Else
        MsgBox "not found"
    End If
Next
 
Upvote 0
Mình gửi File lên mọi người xem giúp mình với, đến k = 11 thì không bị lỗi nhưng khi k =12 thì bị lỗi:D
 

File đính kèm

Upvote 0
Mình gửi File lên mọi người xem giúp mình với, đến k = 11 thì không bị lỗi nhưng khi k =12 thì bị lỗi:D

Thế sao bạn không áp dụng code bài 2, cụ thể là 2 dòng:
Mã:
mat = Application.Match(......)
If TypeName(mat) <> "Error" Then
 
Upvote 0
Thế sao bạn không áp dụng code bài 2, cụ thể là 2 dòng:
Mã:
mat = Application.Match(......)
If TypeName(mat) <> "Error" Then
cho mình hỏi chút, sự khác biệt giữa Application và WorksheetFunction là gì vậy? Mình đã thử 2 dòng code trên nhưng chưa được, bạn có thể hướng dẫm mình xử lý theo hướng Error handling được không ;;;;;;;;;;;
 
Upvote 0
cho mình hỏi chút, sự khác biệt giữa Application và WorksheetFunction là gì vậy?
Tự thí nghiệm sẽ có câu trả lời
Mình đã thử 2 dòng code trên nhưng chưa được, bạn có thể hướng dẫm mình xử lý theo hướng Error handling được không ;;;;;;;;;;;
Tôi thử code bị sao đâu:
Mã:
Sub Testing()
  Dim i As Long, j As Long, l As Integer
  [COLOR=#ff0000]Dim mat As Variant[/COLOR]
  i = 2
  Do While Range("D" & i) <> Empty
    i = i + 1
    If Range("D" & i) <> Range("D" & i - 1) And Range("D" & i) > 0 Then
      j = i: l = j
      Do While Range("D" & l) = Range("D" & l + 1)
        l = l + 1
      Loop
      For k = j To l
        If Range("J" & k) <> 0 Then
          MsgBox "k= " & k
          [COLOR=#ff0000]mat = Application.Match(Range("J" & k), Range(Range("K" & j), Range("K" & l)), 0)[/COLOR]
          [COLOR=#ff0000]If TypeName(mat) <> "Error" Then[/COLOR]
           [COLOR=#ff0000] m = j + mat - 1[/COLOR]
            MsgBox "m= " & m
            Range("I" & m).Cut Range("I" & k)
            Range("K" & m).Cut Range("K" & k)
          End If
        End If
      Next k
    End If
  Loop
End Sub
Sửa lại thôi chứ chả biết code này để làm cái gì nữa
 
Upvote 0
Tự thí nghiệm sẽ có câu trả lời

Tôi thử code bị sao đâu:
Mã:
Sub Testing()
  Dim i As Long, j As Long, l As Integer
  [COLOR=#ff0000]Dim mat As Variant[/COLOR]
  i = 2
  Do While Range("D" & i) <> Empty
    i = i + 1
    If Range("D" & i) <> Range("D" & i - 1) And Range("D" & i) > 0 Then
      j = i: l = j
      Do While Range("D" & l) = Range("D" & l + 1)
        l = l + 1
      Loop
      For k = j To l
        If Range("J" & k) <> 0 Then
          MsgBox "k= " & k
          [COLOR=#ff0000]mat = Application.Match(Range("J" & k), Range(Range("K" & j), Range("K" & l)), 0)[/COLOR]
          [COLOR=#ff0000]If TypeName(mat) <> "Error" Then[/COLOR]
           [COLOR=#ff0000] m = j + mat - 1[/COLOR]
            MsgBox "m= " & m
            Range("I" & m).Cut Range("I" & k)
            Range("K" & m).Cut Range("K" & k)
          End If
        End If
      Next k
    End If
  Loop
End Sub
Sửa lại thôi chứ chả biết code này để làm cái gì nữa

Cảm ơn bạn mình đã làm được rồi, Trong trường hợp xử lý theo hướng Error Handle thì sẽ làm như nào vậy D/-*+/
 
Upvote 0
Web KT

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

Back
Top Bottom