Je suis totalement nouveau en VBA et en codage en général, j'essaie d'obtenir des données des cellules du même classeur (obtenir le chemin du framework ...), puis de démarrer l'application (QTP) et d'exécuter des tests.
Je reçois cette erreur lorsque j'essaie d'obtenir des valeurs dans des cellules Excel:
Run Time Error '424' object required
Je crois qu'il me manque des règles de base, mais j'apprécie votre aide. Veuillez voir ci-dessous la partie du code en question:
Option Explicit
Private Sub RunTest_Click()
Dim envFrmwrkPath As Range
Dim ApplicationName As Range
Dim TestIterationName As Range
'Dim wb As Workbook
'Dim Batch1 As Worksheets
Dim objEnvVarXML, objfso, app As Object
Dim i, Msgarea
Set envFrmwrkPath = ActiveSheet.Range("D6").Value ' error displayed here
Set ApplicationName = ActiveSheet.Range("D4").Value
Set TestIterationName = ActiveSheet.Range("D8").Value
La première ligne de code, Option Explicit
, signifie (en termes simples) que toutes vos variables doivent être déclarées explicitement par Dim
. Ils peuvent être de n'importe quel type, y compris objet, entier, chaîne ou même une variante.
Cette ligne: Dim envFrmwrkPath As Range
déclare la variable envFrmwrkPath
de type Range
. Cela signifie que vous ne pouvez le définir que sur une plage.
Cette ligne: Set envFrmwrkPath = ActiveSheet.Range("D6").Value
tente de définir la variable de type Range
sur une valeur spécifique figurant dans la cellule D6
. Cela peut être un entier ou une chaîne par exemple (cela dépend de ce que vous avez dans cette cellule), mais ce n'est pas une plage.
Je suppose que vous voulez que la valeur soit stockée dans une variable. Essayez quelque chose comme ça:
Dim MyVariableName As Integer
MyVariableName = ActiveSheet.Range("D6").Value
Cela suppose que vous avez un numéro (comme 5) dans la cellule D6. Maintenant, votre variable aura la valeur.
Pour simplifier l'apprentissage, vous pouvez supprimer ou commenter la ligne Option Explicit
et VBA tentera de déterminer le type de variables au moment de l'exécution.
Essayez ceci pour passer à travers cette partie de votre code
Dim envFrmwrkPath As String
Dim ApplicationName As String
Dim TestIterationName As String
Supprimez simplement le .value
de votre code.
Set envFrmwrkPath = ActiveSheet.Range("D6").Value
au lieu de cela, utilisez:
Set envFrmwrkPath = ActiveSheet.Range("D6")