vba Byref argument de l'incompatibilité de type lors de l'appel de la fonction
J'ai une méthode pour renommer la table nom de la colonne.
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
Et je suis à l'appel de cette fonction dans une autre procédure
Public Sub querylistboxitems()
Dim strTableName As String
strTableName = "Table1"
Call Rename_Column(strTableName, "old", "New")
End Sub
Mais il donne une erreur "argument Byref incompatibilité de type"
- Sur quelle ligne? Le VBE devrait hilight la ligne avec le décalage... il semble que l'appel est configuré correctement pour moi. Vous avez 3 cordes de sorte que vous devriez être ok...
- C'est sa mise en surbrillance strTableName dans querylistboxitems procédure
- Essayez de Lancer ByVal en face de vos déclarations de variables dans votre fonction, j'ai eu ce travail pour moi avant
- J'ai testé ton code et il fonctionne très bien pour moi. Il y a un autre problème, par exemple, strTableName est défini par ailleurs. Essayez de la compilation et assurez-vous d'utiliser l'Option Explicite. Vous pouvez faire ce beaucoup plus rapidement avec très peu de travail.
- toujours utiliser l'option explicite. Je ne vois pas pourquoi l'erreur serait de se produire. Êtes-vous certain que tout dans votre code est tapé comme vous l'avez tapé dessus? Aussi, vous pouvez utiliser un autre sous au lieu d'une fonction pour la Rename_Column fonction si vous n'êtes pas retourner une valeur.
- Merci à tous pour votre temps. Dans mon premier code que j'ai cité la ligne par erreur,Dim strTableName Comme une Chaîne de caractères
Vous devez vous connecter pour publier un commentaire.
Il a échoué pour moi parce que vous n'avez pas de définition de "fld". La suite est beaucoup plus direct que en boucle par tous les tables /champs:
Il y a d'autres situations délicates où ce problème peut se produire. Par exemple, lors de la déclaration de deux (ou plus) variables sur une seule ligne:
Maintenant firstSubMenu est de type Variant, tandis que secondSubMenu est de type CommandBarPopup. Cela peut ne pas être ce que vous le souhaitez et peut également être une cause de l'erreur mentionnée ci-dessus lors de leur passage par référence à une fonction qui attend un paramètre de type CommandBarPopup.
Dans ce cas, une solution est de les déclarer sur deux lignes:
Ou, si vous voulez vraiment presser sur une ligne, il peut être fait comme ceci:
Noter que vous devrez répéter le "Comme" type de déclaration pour chaque variable.
Dim string1, string2, string3 As String
à ma liste de "VBA Excel WTF de l'." +1 et merci.