题
我有一个重命名表列名的方法。
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
.
,我在其他过程中呼叫此功能
Public Sub querylistboxitems()
Dim strTableName As String
strTableName = "Table1"
Call Rename_Column(strTableName, "old", "New")
End Sub
.
但它给出了错误“byref参数类型不匹配”
解决方案
它失败了,因为你没有定义“FLD”。以下是通过所有表/字段的循环更直接的直接:
Public Function Rename_Column(tablename As String, oldcolumn As String, newcolumn As String)
Dim dbs As Database
Dim tdf As TableDef
Dim fld As Field
Set dbs = CurrentDb
Set tdf = dbs.TableDefs(tablename)
Set fld = tdf.Fields(oldcolumn)
Set fld = Nothing
Set tdf = Nothing
dbs.Close
Set dbs = Nothing
End Function
. 其他提示
存在可能发生此问题的其他棘手情况。例如,在一行中声明两个(或更多)变量:
Dim firstSubMenu, secondSubMenu As CommandBarPopup
.
现在Firstsubmenu是类型变体,而stinkubmenu是commandbarpopup。这可能不是您所想要的,并且在通过引用函数的函数通过Type CommandBarpopup的参数时,也可以是上述错误的原因。 在这种情况下,解决方案是在两行中声明它们:
Dim firstSubMenu As CommandBarPopup
Dim secondSubMenu As CommandBarPopup
.
或者,如果您真的想在一行上挤压它,它可以这样做:
Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup
.
注意,您必须重复每个变量的“作为”类型声明。
不隶属于 StackOverflow