










用于二维的Dictionary:
CreateOrSet2
HasValue2
数字-字母格式的列号互转:
ColNumToStr
ColStrToNum
字符串连接(类似String.Format()用{0}{1}等做占位符,实现得很土):
StrFormat
StrCat
在Workbook中保存基本类型值:
SetName, GetName
函数指针(用VB->Win API->VB的模拟,参考[1][2]):
另外Application.Run、CallByName、Eval和Evaluate可能更实用,VB6/VBA杂就没一个像js或py那样的全能eval()函数呢。。。
Fn4及例子
初级版ArrayList(类模块):
Class ArrayList
Private arr() As Variant
Private size, capacity As IntegerPrivate Sub Class_Initialize()
size = 0
capacity = 10
ReDim arr(1 To capacity)
End SubPublic Property Get Count() As Integer
Count = size
End PropertyPublic Property Get Item(idx)
Item = arr(idx)
End PropertyPublic Property Let Item(idx, vlu)
arr(idx) = vlu
End PropertyPublic Property Set Item(idx, obj)
Set arr(idx) = obj
End PropertyPublic Sub Add(elem)
EnsureCapacity
size = size + 1
If IsObject(elem) Then
Set arr(size) = elem
Else
arr(size) = elem
End If
End SubPrivate Sub EnsureCapacity()
If (size + 1) > capacity Then
ReDim Preserve arr(1 To capacity * 2) 'Preserve!
capacity = capacity * 2
End If
End SubPublic Sub Clear()
size = 0
End SubPublic Function IndexOf(elem) As Long
idx& = -1
elemObj = IsObject(elem)
For i = 1 To size
If elemObj Then
If IsObject(arr(i)) Then
If ObjPtr(arr(i)) = ObjPtr(elem) Then
idx = i
Exit For
End If
End If
Else
If Not IsObject(arr(i)) Then
If arr(i) = elem Then
idx = i
Exit For
End If
End If
End If
Next i
IndexOf
= idx运行一个SQL查询并填充到工作表上:
ExecuteSelect
Public Sub ExecuteSelect(connStr, selectTxt, destTopLeft As Range)
On Error GoTo ExecuteSelect_Err
Set ws = destTopLeft.Worksheet
Set conn = CreateObject("ADODB.Connection")
conn.Open connStr
Set rs = conn.Execute(selectTxt)
For i = 0 To rs.Fields.Count - 1
destTopLeft.Offset(0, i) = rs.Fields(i).Name
Next i
destTopLeft.Offset(1, 0).CopyFromRecordset rs
ExecuteSelect_Clean:
If Not IsEmpty(rs) Then此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。