Khai báo, gán giá trị nhiều biến ?

Liên hệ QC

nhatnamit

Thành viên mới
Tham gia
19/1/10
Bài viết
15
Được thích
4
Xin chào,

Mình có nhu cầu sử dụng nhiều biến, code đại khái như sau:

Mã:
Option Explicit


Function F(Var) As Variant
    If Not Var = "" Then
        Set F = ActiveSheet.UsedRange.Find(Var, , xlValues, xlPart)
        If F Is Nothing Then ThrowError ("Ko tim thay cot '" & Var & "' trong sheet " & ActiveSheet.Name)
    End If
End Function


Function test() As Variant
    Dim VarArr As Variant, ValArr As Variant, i As Integer
    Dim c01, c02, c03, c04, c05, c06, c07, c08, c09, c10
    VarArr = Array("c01", "c02", "c03", "c04", "c05", "c06", "c07", "c08", "c09", "c10")
    ValArr = Array("[01]", "[02]", "[03]", "[04]", "[05]", "[06]", "[07]", "[08]", "[09]", "[10]")
    
    'declare
    For i = 0 To UBound(VarArr) Step 1
        Set VarArr(i) = F(ValArr(i))
    Next i
    i = 0
    
    Debug.Print c01.Column
    
    'main procedure
    
    'free
    For i = 0 To UBound(VarArr) Step 1
        Set VarArr(i) = Nothing
    Next i
    i = 0
End Function

Nhưng code như trên thì không dùng được. Không biết các bạn có cách nào hay hơn phải dùng 20 dòng code cho việc khai báo, free memory hay không ?

Mong các a/c chỉ giáo. Thanks
 
Mình với bạn, ta thảo luận hàm đầu cái đã, nghen

PHP:
Option Explicit
  Function F(Var) As Variant
  If Not Var = "" Then
     Set F = ActiveSheet.UsedRange.Find(Var, , xlValues, xlPart) 
     If F Is Nothing Then _
          ThrowError ("Ko tim thay cot '" & Var & "' trong sheet " & ActiveSheet.Name)
    End If 
End Function

(1) Bạn đã dùng tuỳ chọn Explicit thì ThrowError nếu là biến thì fải khai báo.
Bạn chưa làm điều này nên chương trình sẽ cự nự là cái chắc
(2) Chuyện này nhỏ thôi, ta nên viết tham số 'Var' ở dạng 'vAr' sẽ dễ nhìn hơn!

Theo mình bạn lật qua, lật lại hàm này xem sao:
Mã:
Option Explicit
Function F(vAr) As Variant
    If Not vAr = "" Then
        Set F = ActiveSheet.UsedRange.Find(vAr, , xlValues, xlPart)
        If F Is Nothing Then
            F = "Ko tim thay cot '" & vAr & "' trong sheet " & ActiveSheet.Name
        Else
            F = F.Address
        End If
    End If
End Function

Chỉ sau đó bạn sẽ thấy thông điệp của mình & chúc bạn sớm thành công.
 
Upvote 0
oops mình thiếu cái hàm ThrowError thôi. Vấn đề cần giải quyết là mình muốn khai báo, tìm và gán sẵn giá trị cho
c01, c02, c03, c04, c05, c06, c07, c08, c09, c10 để tiện sử dụng.

Mã:
Function ThrowError(ErrText As String) As String
    Dim tmp As String
    If Not ErrText = "" Then
        tmp = MsgBox("TH" & ChrW(212) & "NG B" & ChrW(193) & "O:" & vbNewLine & _
            "---" & vbNewLine & _
            ErrText & vbNewLine & _
            "---" & vbNewLine & _
            "Vui long lien he ho tro", _
            vbOKOnly, "Macro")
    End If
End Function



 
Upvote 0
Web KT
Back
Top Bottom