25/05/2018, 23:29

Một số hàm VBA thường dùng

Dưới đây là câu lệnh VBA của 6 hàm cơ bản và hữu ích nhất thường xuyên được sử dụng. Bạn chỉ cần sao chép đoạn mã trên và dán vào mô-đun chạy VBA của mình. FileExists – Trả về kết quả “TRUE” nếu tồn tại một tệp cụ thể nào đó. FileNameOnly – Trích xuất phần tên gọi tách riêng ...

Dưới đây là câu lệnh VBA của 6 hàm cơ bản và hữu ích nhất thường xuyên được sử dụng. Bạn chỉ cần sao chép đoạn mã trên và dán  vào mô-đun chạy  VBA của mình.

  • FileExists – Trả về kết quả “TRUE” nếu tồn tại một tệp cụ thể nào đó.
  • FileNameOnly– Trích xuất phần tên gọi tách riêng khỏi chuỗi dữ  liệu đường dẫn/tên gọi của tệp
  • PathExists – Trả về kết quả “TRUE” nếu tồn tại một đường dẫn cụ thể nào đó.
  • RangeNameExists – Trả về kết quả “TRUE” nếu tồn tại một dải tên cụ thể.
  • SheetExists – Trả về kết quả “TRUE” nếu tồn tại một trang tính cụ thể nào đó.
  • WorkBookIsOpen – Trả về kết quả “TRUE” nếu bảng tính đang hoạt động.

Hàm FileExists

Private Function FileExists(fname) As Boolean
'   Returns TRUE if the file exists
    Dim x As String
    x = Dir(fname)
    If x <> "" Then FileExists = True _
        Else FileExists = False
End Function

Hàm FileNameOnly

Private Function FileNameOnly(pname) As String
'   Returns the filename from a path/filename string
    Dim i As Integer, length As Integer, temp As String
    length = Len(pname)
    temp = ""
    For i = length To 1 Step -1
        If Mid(pname, i, 1) = Application.PathSeparator Then
            FileNameOnly = temp
            Exit Function
        End If
        temp = Mid(pname, i, 1) & temp
    Next i
    FileNameOnly = pname
End Function

Hàm PathExists

Private Function PathExists(pname) As Boolean
'   Returns TRUE if the path exists
    Dim x As String
    On Error Resume Next
    x = GetAttr(pname) And 0
    If Err = 0 Then PathExists = True _
      Else PathExists = False
End Function

Hàm RangeNameExists

Private Function RangeNameExists(nname) As Boolean
'   Returns TRUE if the range name exists
    Dim n As Name
    RangeNameExists = False
    For Each n In ActiveWorkbook.Names
        If UCase(n.Name) = UCase(nname) Then
            RangeNameExists = True
            Exit Function
        End If
    Next n
End Function

Hàm SheetExists

Private Function SheetExists(sname) As Boolean
'   Returns TRUE if sheet exists in the active workbook
    Dim x As Object
    On Error Resume Next
    Set x = ActiveWorkbook.Sheets(sname)
    If Err = 0 Then SheetExists = True _
        Else SheetExists = False
End Function

Hàm WorkbookIsOpen

Private Function WorkbookIsOpen(wbname) As Boolean
'   Returns TRUE if the workbook is open
    Dim x As Workbook
    On Error Resume Next
    Set x = Workbooks(wbname)
    If Err = 0 Then WorkbookIsOpen = True _
        Else WorkbookIsOpen = False
End Function
0