web-dev-qa-db-fra.com

Objet '424' d'Excel VBA Run Time Error requis

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
9
user3232996

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
18
Portland Runner

Supprimez simplement le .value de votre code.

Set envFrmwrkPath = ActiveSheet.Range("D6").Value

au lieu de cela, utilisez: 

Set envFrmwrkPath = ActiveSheet.Range("D6")
2
Sandeep Bhatt