質問

テーブル列名の名前を変更する方法があります。

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
.

各変数の 'タイプ宣言を繰り返す必要があることに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top