VBMAN.ToolsArray - Array Tool Object
Overview
VBMAN.ToolsArray provides utility functions for array operations, including array element deletion, destructuring assignment, slicing, searching, etc.
Methods
Remove
Delete element at specified index from array
vb
Public Function Remove(ByRef Arr As Variant, ByVal Index As Integer) As BooleanParameters:
Arr- Array (passed by reference)Index- Index to delete
Returns: True=success, False=failure
Description:
- Moves elements after specified index forward
- Automatically adjusts array size
Example:
vb
Dim arr(3) As String
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
arr(3) = "D"
' Delete element at index 1 (B)
VBMAN.ToolsArray.Remove arr, 1
' Result: A, C, D
Debug.Print arr(0) ' A
Debug.Print arr(1) ' C
Debug.Print arr(2) ' DDeArray
Destructure array to variables
vb
Public Sub DeArray(Arr As Variant, ParamArray OutVars())Parameters:
Arr- Source arrayOutVars- Output variable array
Description:
- Assigns array elements to variables in order
- Only assigns partial elements if insufficient variables
Example:
vb
Dim a As String, b As String, c As String
' Destructure array
VBMAN.ToolsArray.DeArray Split("Apple/Banana/Orange", "/"), a, b, c
Debug.Print a ' Apple
Debug.Print b ' Banana
Debug.Print c ' Orange
' Only take first two
Dim x As String, y As String
VBMAN.ToolsArray.DeArray Array(1, 2, 3, 4), x, y
Debug.Print x ' 1
Debug.Print y ' 2GetIndexByValue
Find index by value
vb
Public Function GetIndexByValue(Arr As Variant, Value As String) As LongParameters:
Arr- ArrayValue- Value to find
Returns: Index value, returns -1 if not found
Example:
vb
Dim fruits(3) As String
fruits(0) = "apple"
fruits(1) = "banana"
fruits(2) = "orange"
fruits(3) = "grape"
Dim idx As Long
idx = VBMAN.ToolsArray.GetIndexByValue(fruits, "orange")
Debug.Print idx ' 2
idx = VBMAN.ToolsArray.GetIndexByValue(fruits, "watermelon")
Debug.Print idx ' -1IsArrayEmpty
Check if array is empty
vb
Public Function IsArrayEmpty(Arr As Variant) As BooleanParameters:
Arr- Array
Returns: True=empty array, False=not empty
Example:
vb
Dim emptyArr() As String
Dim arr(1) As String
arr(0) = "test"
Debug.Print VBMAN.ToolsArray.IsArrayEmpty(emptyArr) ' True
Debug.Print VBMAN.ToolsArray.IsArrayEmpty(arr) ' FalseIsControlArray
Check if control is a control array
vb
Public Function IsControlArray(Ctl As Object) As BooleanParameters:
Ctl- Control object
Returns: True=is control array, False=is not
Example:
vb
' Check if Command1 is a control array
If VBMAN.ToolsArray.IsControlArray(Command1) Then
Debug.Print "Command1 is a control array"
End IfSliceByteArray
Byte array slicing
vb
Public Function SliceByteArray(ByRef Arr() As Byte, ByVal StartPos As Long, Optional ByVal EndPos As Long = -1) As Byte()Parameters:
Arr- Byte arrayStartPos- Start positionEndPos- End position (-1 means to end)
Returns: Sliced byte array
Example:
vb
Dim bytes(9) As Byte
' ... fill data
' Get bytes 2-5
Dim sliced() As Byte
sliced = VBMAN.ToolsArray.SliceByteArray(bytes, 2, 5)Comprehensive Examples
Example 1: Dynamic Array Element Deletion
vb
Private Sub RemoveFromArray()
Dim items As Variant
items = Array("Apple", "Banana", "Orange", "Grape")
' Delete "Banana" (index 1)
VBMAN.ToolsArray.Remove items, 1
Dim i As Long
For i = LBound(items) To UBound(items)
Debug.Print items(i)
Next i
' Output: Apple, Orange, Grape
End SubExample 2: Batch Variable Assignment
vb
Private Sub ParsePath()
Dim path As String
path = "C:\\Users\\Admin\\Documents\\file.txt"
Dim drive As String, user As String, folder As String, file As String
' Destructure path
VBMAN.ToolsArray.DeArray Split(path, "\\"), drive, user, folder, file
Debug.Print "Drive: " & drive ' C:
Debug.Print "User: " & user ' Users
Debug.Print "Folder: " & folder ' Admin
Debug.Print "File: " & file ' Documents
End SubExample 3: Find and Delete
vb
Private Sub RemoveByValue()
Dim items() As String
items = Split("Apple,Banana,Orange,Grape", ",")
' Find index
Dim idx As Long
idx = VBMAN.ToolsArray.GetIndexByValue(items, "Orange")
If idx >= 0 Then
' Delete found element
VBMAN.ToolsArray.Remove items, idx
MsgBox "Orange deleted"
Else
MsgBox "Orange not found"
End If
End SubBest Practices
- Index Check: Check index validity before deleting or accessing array
- Destructuring Assignment:
DeArrayis suitable for processing fixed-format data parsing - Array Bounds: Note that VB6 arrays can have custom starting index
- Type Matching:
GetIndexByValueperforms string comparison, pay attention to type conversion