機能を呼び出すときのVBA byref引数型の不一致
-
21-12-2019 - |
質問
テーブル列名の名前を変更する方法があります。
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
. 他のヒント
この問題が発生する可能性がある他のトリッキーな状況があります。たとえば、1行に2つの変数を宣言する場合:
Dim firstSubMenu, secondSubMenu As CommandBarPopup
.
今のファーストサブメニューは変数型ですが、SecondsubMenuはCommandBarPopup型です。これはあなたが意図したものではなく、CommandBarpopupの型のパラメータを期待する関数を参照してそれらを渡して上記のエラーの原因となる可能性があります。 この場合、解決策は2行の2行で宣言することです:
Dim firstSubMenu As CommandBarPopup
Dim secondSubMenu As CommandBarPopup
.
またはあなたが本当に1行でそれを絞りたいのなら、このようにすることができます:
Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup
.
各変数の 'タイプ宣言を繰り返す必要があることに注意してください。
所属していません StackOverflow