VBA BYREF 인수 형식이 FUTITION을 호출 할 때 불일치합니다
-
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
. 다른 팁
이 문제가 발생할 수있는 다른 까다로운 상황이 있습니다.예를 들어, 한 줄에 두 개의 (또는 그 이상) 변수를 선언 할 때 :
Dim firstSubMenu, secondSubMenu As CommandBarPopup
.
이제 FirstSubMenu는 변형 유형이며 SecondSubmenu는 CommandBarPopup 유형입니다.이것은 명령 모음업의 매개 변수를 기대하는 함수를 참조하여 전달할 때 위에서 언급 한 오류의 원인이 될 수 있습니다. 이 경우 해결책은 두 줄로 선언하는 것입니다.
Dim firstSubMenu As CommandBarPopup
Dim secondSubMenu As CommandBarPopup
.
또는 한 줄에서 그것을 정말로 짜내고 싶다면 다음과 같이 할 수 있습니다 :
Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup
.
각 변수에 대해 'AS'유형 선언을 반복해야합니다.
제휴하지 않습니다 StackOverflow