2016-01-13 2 views
0

Chaque fois que j'essaie de déboguer ou d'exécuter le programme et qu'il rencontre une erreur, le VBE (Autocad) n'affiche pas la ligne où se trouve l'erreur, contrairement aux autres IDEs, il arrivait à cette ligne et surlignait avec la couleur jaune. En outre, le défilement ne fonctionne pas. Je sais que je devrais installer des plugins mais je suis incapable de m'aider. enter image description hereDébogage dans autocad VBA ide n'affiche pas l'erreur

Option Explicit 
    Sub Test() 
    'Declarations 
    'Opened Document 
    Dim acDocu As AcadDocument 
    Set acDocu = ThisDrawing.Application.ActiveDocument 

    'Select on screen 
    Dim acSelectionSet As AcadSelectionSet 
    Set acSelectionSet = ThisDrawing.SelectionSets.Add("SjjEffffT") 
    acSelectionSet.SelectOnScreen 

    'Manipulating in loops for finding group names having objects selected 
    Dim entity As AcadEntity 
    Dim entityhandle() As String 
    Dim Grp As AcadGroup 
    Dim groupname() As String 
    Dim i As Integer 
    i = 0 
    Dim j As Integer 
    j = 0 
    Dim temp As Integer 
    temp = 0 
    Dim GrpEnt As AcadEntity 
    Dim grpenthandle As String 
    Dim entity_count As Integer 
    'Dim entity_array As Variant 
    entity_count = acSelectionSet.Count 
    ReDim entityhandle(entity_count) 
    ReDim groupname(entity_count) 
    For Each entity In acSelectionSet 
    'entity_array = entity 
      entityhandle(i) = entity.Handle 
      For Each Grp In ThisDrawing.groups 
        For Each GrpEnt In Grp 
        grpenthandle = GrpEnt.Handle 
        If entityhandle(i) = grpenthandle Then 
         If temp = 0 Then 
          groupname(j) = Grp.Name 
          Debug.Print "Group in selection:" & groupname(j) 
          j = j + 1 
         End If 

        End If 
       temp = temp + 1 
      Next 
      temp = 0 
     Next 
     i = i + 1 
    Next 

    'Copying the objects and pasting into new drawing 
    Dim acDocto As AcadDocument 
    Dim file_name As String 
    'file_name = InputBox("Enter the file name along with full path and extension") 
    file_name = "D:\PI_Tool_files_3223\D00440023new.DWG" 
    Set acDocto = Documents.Open(file_name) 
    Dim acObject As AcadObject 
    Dim retvalue As Variant 
    retvalue = acDocu.CopyObjects(entityhandle, acDocto.ModelSpace) 

    acSelectionSet.Delete 
    End Sub 

Le code est écrit ci-dessus. Mais je pense que le problème est avec le complément car je ne peux pas déboguer.

+0

Sans le code, toute réponse est un coup de couteau dans l'obscurité. – Gareth

+0

@Gareth Hey, mon problème principal est de déboguer, car je suis incapable d'obtenir la ligne exacte, où il montre l'erreur. peut être à cause du plugin. je ne sais pas – Divyanshu

+0

cela arrive parce que le moteur VBA ne peut pas trouver l'objet et la méthode sur la bibliothèque, donc quand il essaie d'exécuter la méthode, il renvoie l'erreur. C'est pourquoi vous ne pouvez pas voir la ligne où cela arrive. Par exemple, vous pouvez créer un autre sub et vous appeler la routine test(). –

Répondre

1

L'IDE VBA est assez vieux (1998) et il a des capacités de débogage limitées. Vous devriez arrêter d'utiliser ceci, c'est une technologie obsolète, pas activement supportée par Microsoft/Autodesk.

Pour certaines erreurs, il n'est pas capable de localiser la ligne où l'erreur s'est produite, et il vous reste des codes d'erreur obscurs et des messages inutiles.

+0

Quel IDE devrait-il utiliser à la place? – Verzweifler

+0

[Visual Studio] (https://www.visualstudio.com/post-download-vs?sku=community&clcid=0x40c). L'édition communautaire est gratuite pour les particuliers, les petites organisations, l'environnement d'apprentissage, la recherche universitaire et les projets open source. Veuillez lire les [termes de la licence] (https://www.visualstudio.com/support/legal/dn877550) pour voir si cela correspond à votre utilisation. Vous pouvez lire ce [tutoriel] (http://usa.autodesk.com/adsk/servlet/index?id=18162650&siteID=123112) pour commencer. – Maxence

+0

@Maxence Impossible d'ajouter des plugins pour le faire fonctionner? – Divyanshu

0

Avez-vous essayé de définir un point d'arrêt à la première ligne possible? (Définissez acDocu = ThisDrawing.Application.ActiveDocument) Ensuite, parcourez pour voir l'objet/propriété/méthode incriminé. Cela ne fonctionne pas toujours.

0

Pouvez-vous charger le code dans un module, au lieu de "ThisDrawing", puis déboguer?

+0

J'ai ajouté le commentaire pour vous. Vous pouvez supprimer le message. –

+0

Les réponses ne sont utilisées que pour des réponses complètes! Il vaut mieux commenter. Malheureusement, vous n'avez pas de représentant. –

+1

ok, merci. Je saurai pour la prochaine fois! – tmccar