2014-02-25 5 views
1

테이블 열 이름의 이름을 바꾸는 방법이 있습니다.함수를 호출 할 때 vba Byref 인수 유형이 일치하지 않습니다.

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 인수 형식이 일치하지"

+0

줄에? VBE가 불일치로 라인을 미끄러 뜨려야합니다 ... 전화가 제대로 설정되어있는 것처럼 보입니다. 당신은 거기에 괜찮을 것입니다 그래서 당신은 3 문자열을 가지고 ... – MattB

+0

** querylistboxitems ** 절차에서 ** hylighting ** strTableName ** 절차 – vuyy1182

+0

귀하의 함수에서 변수 선언의 infront 던지려고, 내가 전에이 일을 했어 – pegicity

답변

2

사용자가 정의하지 않았기 때문에 그것은 나를 실패 " 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 
19

이 문제가 발생할 수있는 다른 까다로운 경우가 있습니다. 예를 들어 한 줄에 두 개 이상의 변수를 선언 할 때 secondSubMenu이 타입은 CommandBarPopup의 동안

Dim firstSubMenu, secondSubMenu As CommandBarPopup 

지금 firstSubMenu이 변형 형태이다. 이것은 의도 한 것이 아니며 CommandBarPopup 유형의 매개 변수를 예상하는 함수를 참조로 전달할 때 위에서 언급 한 오류의 원인이 될 수도 있습니다.

Dim firstSubMenu As CommandBarPopup 
Dim secondSubMenu As CommandBarPopup 

또는 당신이 정말로 한 줄에 그것을 집어 넣은하려는 경우, 그것은 다음과 같이 수행 할 수 있습니다 : 이 경우 해결책은 두 행을 선언하는 것입니다

Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup 

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

+0

누구든지이 오류를 해결할 다른 방법을 찾았습니까? 함수에 전달하는 변수가 많으면 매우 귀찮을 수 있습니다. – t22money

+4

"Dim string1, string2, string3 As String"의 예기치 않은 동작을 "Excel VBA WTF 's"목록에 추가했습니다. +1 고마워. –

관련 문제