L'objet de paragraphe dans le mot a une propriété appelée gamme. Dans cet objet de gamme dispose d'une propriété appelée cellules. P>
Pour le paragraphe qui ne sont pas dans une table, ce paragraphe.Range.cells est défini sur "". Ceci peut être vu dans la fenêtre de montres en mode débogage. P>
Pour le paragraphe qui figurant dans une table, le paragraphe.Range.cells possède d'autres propriétés, par exemple, il possède une propriété appelée compte. P>
J'utilise cette propriété de paragraphe.Range.cells pour déterminer si le paragraphe est dans une table ou non. Cependant, je ne peux pas sembler comprendre comment tester cela. P>
Par exemple, je ne peux pas simplement tester comme ça ... P>
si paragraphe.range.cells <> null alors ... ou même Si Isnull (paragraphe.Range.cells), alors ... p>
Il jette une erreur d'exécution '5907' Il n'y a pas de table à cet endroit p>
Alors, comment testerais-je pour cela? merci p>
3 Réponses :
* édité (si err =) modifié en (si ERR ERR =) est modifié en (si erreur <>) strong> Vous pouvez simplement permettre à l'erreur de se produire et de l'attraper à l'aide de Onerror code> instruction code> / p>
+1 Même difficile, il semble que vous ayez votre 'Commentaires code> mélangé.
Si err = 5907, alors "Aucune erreur n'est obtenue code> ... En fait, l'erreur 5907 s'est produite.
Merci beaucoup pour l'avis.
Je l'ai corrigé juste après avoir lu votre commentaire. Merci encore, merci beaucoupoupie
Vous ne pouvez pas appeler la méthode des cellules à moins que le paragraphe ne soit dans une table. Vous devez utiliser une méthode différente pour déterminer si la plage est dans une table.
Vous pouvez utiliser ... p> ... ou ... paragraph.Range.Information(wdWithinTable)
paragraphe.range.tables.count> 0 code> l'a fait (même avec Word Interop in .NET) :)
Le paragraphe.Range.tables.count> 0 est des informations inestimables par opposition au paragraphe.Range.Information (wdwithintable). Dans une boucle, la deuxième option n'est pas plus lente, elle est carrément douloureuse, car une table à 3 lignes 3 peut prendre jusqu'à 15 secondes pour traiter. La première option préférée ne prend que millisecondes. Merci pour la pointe lorsque j'ai passé des heures à essayer de trouver une solution de contournement.
Vous pouvez utiliser le Informations Code> Propriété
:
If Selection.Information(wdWithInTable) Then 'What ever you'd like to do End If
Consultez ma réponse ci-dessous, ainsi que l'erreur spécifique = 5907 éditée plus tard.