我有一个方法来重命名表列名称.
Public Function Rename_Column(tablename As String, oldcolumn As String, newcolumn As String)
Dim dbs As Database, tdf As TableDef
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
If tdf.Name = tablename Then
For Each fld In tdf.Fields
If fld.Name = oldcolumn Then
fld.Name = newcolumn
End If
Next
End If
Next
dbs.Close
End Function
Run Code Online (Sandbox Code Playgroud)
我在其他程序中调用此函数
Public Sub querylistboxitems()
Dim strTableName As String
strTableName = "Table1"
Call Rename_Column(strTableName, "old", "New")
End Sub
Run Code Online (Sandbox Code Playgroud)
但它给出了一个错误"Byref参数类型不匹配"
Cod*_*Kid 22
还有其他棘手的情况可能会发生此问题.例如,在一行上声明两个(或更多)变量时:
Dim firstSubMenu, secondSubMenu As CommandBarPopup
Run Code Online (Sandbox Code Playgroud)
现在firstSubMenu的类型为Variant,而secondSubMenu的类型为CommandBarPopup.这可能不是您的意图,也可能是上述错误的原因,通过引用它来引用一个需要CommandBarPopup类型的参数的函数.在这种情况下,解决方案是将它们声明为两行:
Dim firstSubMenu As CommandBarPopup
Dim secondSubMenu As CommandBarPopup
Run Code Online (Sandbox Code Playgroud)
或者,如果你真的想在一行上挤压它,可以这样做:
Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup
Run Code Online (Sandbox Code Playgroud)
请注意,您必须为每个变量重复"As"类型声明.