我正在使用VBA,并开始想知道在引用变量之前声明变量是否更好地改善了性能,因为我们在内存中声明了变量,因此下面是在引用变量之前声明变量的版本:
Sub ConnectingToDatabases()
Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Dim C As cConnectionString
Set C = New cConnectionString
Conn.ConnectionString = C.GetString(Access)
Conn.Open
Dim Cat As ADOX.Catalog
Set Cat = New ADOX.Catalog
Set Cat.ActiveConnection = Conn
Dim Tbl As ADOX.Table
Dim Col As ADOX.Column
For Each Tbl In Cat.Tables
If Tbl.Type = "TABLE" And Tbl.Name = "tblActor" Then
Debug.Print Tbl.Name
For Each Col In Tbl.Columns
Debug.Print Col.Name, Col.Type
Next Col
End If
Next Tbl
Conn.Close
Set C = Nothing
Set Col = Nothing
Set Tbl = Nothing
Set Cat = Nothing
Set Conn = Nothing
End Sub
这是最常见的一种方法,我想知道在性能或可读性方面,上述版本是否比以下版本更好:
Sub ConnectingToDatabases()
Dim Conn As ADODB.Connection
Dim C As cConnectionString
Dim Cat As ADOX.Catalog
Dim Tbl As ADOX.Table
Dim Col As ADOX.Column
Set Conn = New ADODB.Connection
Set C = New cConnectionString
Conn.ConnectionString = C.GetString(Access)
Conn.Open
Set Cat = New ADOX.Catalog
Set Cat.ActiveConnection = Conn
For Each Tbl In Cat.Tables
If Tbl.Type = "TABLE" And Tbl.Name = "tblActor" Then
Debug.Print Tbl.Name
For Each Col In Tbl.Columns
Debug.Print Col.Name, Col.Type
Next Col
End If
Next Tbl
Conn.Close
Set C = Nothing
Set Col = Nothing
Set Tbl = Nothing
Set Cat = Nothing
Set Conn = Nothing
End Sub
类模块cConnectionString仅供参考:
Option Explicit
Public Enum ConnectionStr
Access
Sql
End Enum
Public Function GetString(ByVal cType As ConnectionStr)
Select Case cType
Case 0
GetString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\BIFanatic\" & _
"Desktop\Personal\Movies.accdb;Persist Security Info=False;"
Case 1
GetString = ""
End Select
End Function
我知道你们中有些人可能会说这取决于哪一个是绝对正确的,但是想知道我是否要向您发送带有数百个变量的代码,哪种方法可以使您轻松查看我的代码?