< Public Function FormatFileSize (Size As Variant, Optional Units As String = "b") (?)

Comments

'------------------------------------------------------------------------- 'Convert a file size to readable text 'eg. 2048 becomes 2K '-------------------------------------------------------------------------

Public Function FormatFileSize (Size As Variant, Optional Units As String = "b")
Dim Range As Integer
    Dim Abbrev As String
    Dim Divisor As Long
    Dim Text As String
    
    Size = Int(Abs(Size))
    
    Dim Boundary1 As Variant
    Dim Boundary2 As Variant
    Dim Boundary3 As Variant
    Boundary1 = 4000
    Boundary2 = Boundary1 * 1000
    Boundary3 = Boundary2 * 1000
    
    Select Case Size
        Case 0 To Boundary1 - 1:
            Range = 0
            Abbrev = ""
            Divisor = 1
            
        Case Boundary1 To Boundary2 - 1:
            Range = 1
            Abbrev = "K"
            Divisor = 1024
            
        Case Boundary2 To Boundary3 - 1:
            Range = 2
            Abbrev = "M"
            Divisor = 1024 ^ 2
            
        Case Else:
            Range = 3
            Abbrev = "G"
            Divisor = 1024 ^ 3
            
    End Select
    
        
    Text = Format(Int(Size / Divisor), "#,##0 ") & Abbrev & Units
    
    FormatFileSize = Text
End Function


Copying, Return to index