Pergunta

Eu tenho um método para mudar o nome da tabela nome da coluna.

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

E eu estou chamando esta função em outras procedimento

Public Sub querylistboxitems()
  Dim strTableName As String

  strTableName = "Table1"
  Call Rename_Column(strTableName, "old", "New")
End Sub

Mas está dando um erro "argumento Byref tipo incompatível"

Foi útil?

Solução

Não para mim, porque você não definir "fld".O seguinte é muito mais direta do que um loop através de todos os tabelas / campos:

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

Outras dicas

Há outras situações complicadas onde este problema poderá ocorrer.Por exemplo, quando declarar duas (ou mais) variáveis em uma linha:

Dim firstSubMenu, secondSubMenu As CommandBarPopup

Agora firstSubMenu é do tipo Variant, enquanto secondSubMenu é do tipo CommandBarPopup.Este pode não ser o que você pretende e pode também ser uma causa para o erro acima mencionado, quando a passagem deles por referência a uma função que espera um parâmetro de tipo de CommandBarPopup.Neste caso, uma solução é declarar-los em duas linhas:

Dim firstSubMenu As CommandBarPopup
Dim secondSubMenu As CommandBarPopup

Ou, se você realmente quer para espremê-lo em uma linha, ele pode ser feito assim:

Dim firstSubMenu As CommandBarPopup, secondSubMenu As CommandBarPopup

Note que você terá que repetir o 'Como' declaração de tipo para cada variável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top