Hàm mới tạo không chạy được! (1 người xem)

Liên hệ QC

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

hungpecc1

Thành viên gắn bó
Tham gia
24/8/12
Bài viết
1,709
Được thích
2,304
Giới tính
Nam
em viết 1 hàm cho excel ,,
em viết dưới dạng sub thì chạy mà function lại không chạy ,các pác giúp em tìm nguyên nhân ^^

sub này thì chạy !
Mã:
Public Sub ktra()
Dim arr() As Single
AX = Range("E1:E31")
M22 = Range("D1:D31")
M33 = Range("F1:F31")
             ReDim arr(1 To UBound(M22, 1), 1 To 3)
  ' tim max m22+m33
        For irow = 1 To UBound(M22, 1)
            If M22(irow, 1) <> "" And IsNumeric(M22(irow, 1)) Then
                i = i + 1
                arr(i, 1) = M22(irow, 1)
                arr(i, 2) = M33(irow, 1)
            End If
            If AX(irow, 1) <> "" And IsNumeric(AX(irow, 1)) And M22(irow, 1) = "" Then
                j = j + 1
                arr(j, 3) = AX(irow, 1)
            End If
         Next
         Debug.Print j
            Nmin = arr(1, 3)
            For i = 1 To j
                k = k + 1
                If arr(i, 3) < Nmin Then
                    Nmin = arr(i, 3)
                    Exit For
                End If
            Next
      If k Mod 2 = 0 Then
            M1 = Abs(arr(k - 1, 1)) + Abs(arr(k - 1, 2))
            M2 = Abs(arr(k, 1)) + Abs(arr(k, 2))
            If M1 > M2 Then
                 Debug.Print Nmin & " / " & M1
            Else
                 Debug.Print Nmin & " / " & M2
            End If
        Else
            M1 = Abs(arr(k, 1)) + Abs(arr(k, 2))
            M2 = Abs(arr(k + 1, 1)) + Abs(arr(k + 1, 2))
            If M1 > M2 Then
                 Debug.Print Nmin & " / " & M1
            Else
                 Debug.Print Nmin & " / " & M2
            End If
        End If
       
End Sub
còn function thì không chạy :?
Mã:
Public Function Nmin_Mtu(v2 As Range, v3 As Range, v4 As Range) As String
Dim irow As Integer, j As Integer, i As Integer, k As Integer
Dim vt1 As Long, vt2 As Long
Dim Nmax As Single, M1 As Single, M2 As Single
Dim rng As Range
Dim arr() As Single
Dim moment, M22, M33, AX
   vt1 = 1
   vt2 = 31
' xu ly mang
          M22 = v2.Resize(vt2 - vt1 + 1).Offset(vt1 - 1)
          AX = v3.Resize(vt2 - vt1 + 1).Offset(vt1 - 1)
          M33 = v4.Resize(vt2 - vt1 + 1).Offset(vt1 - 1)
           ReDim arr(1 To UBound(M22, 1), 1 To 3)
  ' tim max m22+m33
        For irow = 1 To UBound(M22, 1)
            If M22(irow, 1) <> "" And IsNumeric(M22(irow, 1)) Then
                i = i + 1
                arr(i, 1) = M22(irow, 1)
                arr(i, 2) = M33(irow, 1)
            End If
            If AX(irow, 1) <> "" And IsNumeric(AX(irow, 1)) And M22(irow, 1) = "" Then
                j = j + 1
                arr(j, 3) = AX(irow, 1)
            End If
         Next
         
            Nmin = arr(1, 3)
            For i = 1 To j
                k = k + 1
                If arr(i, 3) < Nmin Then
                    Nmin = arr(i, 3)
                    Exit For
                End If
            Next
      If k Mod 2 = 0 Then
            M1 = Abs(arr(k - 1, 1)) + Abs(arr(k - 1, 2))
            M2 = Abs(arr(k, 1)) + Abs(arr(k, 2))
            If M1 > M2 Then
                Nin_Mtu = Nmin & " / " & M1
            Else
                Nmin_Mtu = Nmin & " / " & M2
            End If
        Else
            M1 = Abs(arr(k, 1)) + Abs(arr(k, 2))
            M2 = Abs(arr(k + 1, 1)) + Abs(arr(k + 1, 2))
            If M1 > M2 Then
                Nmin_Mtu = Nmin & " / " & M1
            Else
                Nmin_Mtu = Nmin & " / " & M2
            End If
        End If
                      
End Function
cụ thể file đính kèm của e như sau :
 
Chủ đề này nên ở BOX nào đó trong mục "Lập trình"

Hàm vẫn chạy bình thường 1 khi bạn sửa lại chính tả trong 1 câu lệnh còn sai.

(òn chuyện kết quả đúng/sai là của bạn!
 

File đính kèm

Upvote 0
Bí kíp của mình vô cùng đơn giản

thanks nhiều !
e ngồi dò mãi mà ko ra, pác có phương pháp gì mà dò lỗi nhanh vậy !

(*) Khai báo tường minh

Option explixit

 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom