문제

테이블 열 이름의 이름을 바꾸는 방법이 있습니다.

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는 변형 유형이며 SecondSubmenu는 CommandBarPopup 유형입니다.이것은 명령 모음업의 매개 변수를 기대하는 함수를 참조하여 전달할 때 위에서 언급 한 오류의 원인이 될 수 있습니다. 이 경우 해결책은 두 줄로 선언하는 것입니다.

Dim firstSubMenu As CommandBarPopup
Dim secondSubMenu As CommandBarPopup
.

또는 한 줄에서 그것을 정말로 짜내고 싶다면 다음과 같이 할 수 있습니다 :

Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup
.

각 변수에 대해 'AS'유형 선언을 반복해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top