< 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