2011-06-22 9 views
5

शब्द में अनुच्छेद वस्तु में रेंज नामक एक संपत्ति है। इस रेंज ऑब्जेक्ट में सेल नामक एक संपत्ति है।कैसे जांचें कि पैराग्राफ तालिका में है या नहीं, एमएस-वर्ड मैक्रो में?

पैराग्राफ के लिए जो तालिका में नहीं हैं, यह गुण पैराग्राफ.रेंज.कल्स "" पर सेट है। यह डीबग मोड में घड़ियां विंडो में देखा जा सकता है।

किसी तालिका में पैराग्राफ के लिए, संपत्ति पैराग्राफ.रेंज.कल्स में अन्य गुण हैं, उदाहरण के लिए इसकी गणना गिनती है।

मैं पैराग्राफ की इस संपत्ति का उपयोग कर रहा हूं। श्रेणी। यह निर्धारित करने के लिए कि पैराग्राफ तालिका में है या नहीं। हालांकि, मुझे यह पता लगाना प्रतीत नहीं होता कि इसका परीक्षण कैसे किया जाए।

उदाहरण के लिए, मैं बस इस तरह का परीक्षण नहीं कर सकते हैं ...

paragraph.Range.Cells <> यदि अशक्त फिर .... या यहाँ तक कि तो IsNull (paragraph.Range.Cells) फिर ...

कैसे मैं इस के लिए परीक्षण होगा यह फेंकता है, एक रन-टाइम त्रुटि '5907' इस स्थान

तो में कोई टेबल है? धन्यवाद

+0

नीचे मेरा उत्तर देखें, और बाद में विशिष्ट Err = 5907 संपादित किया गया। – Ahmad

उत्तर

1

* संपादित (यदि अं =) करने के लिए बदल (यदि अरे <>)

आप बस त्रुटि होती हैं और OnError बयान

Dim ParagraphIsTable As Object 

    OnError Resume Next  'allows errors to happen but execute next instruction 
    ParagraphIsTable = paragraph.Range.Cells 

    If Err <> 5907 Then '(this is to check for a specific error that might have happened) 
      'No Error occured, this means that ParagraphIsTable variable must contain a value 
      ' Do the rest of your code here 
    Else 
      ' an Error occured, this means that this is not a table 
      ' do whatever 
    End If 
OnError Goto 0   ' This cancels the effect of OnError Resume Next 
        ' Which means if new errors happen, you will be prompt about them 
+1

+1 यह भी कठिन लगता है कि आपको अपनी 'टिप्पणियां' मिश्रित हो गई है। 'अगर Err = 5907 फिर 'कोई त्रुटि नहीं हुई' ... असल में, त्रुटि 5907 हुई। –

+0

नोटिस के लिए बहुत बहुत धन्यवाद। – Ahmad

+0

मैंने आपकी टिप्पणी पढ़ने के बाद इसे सही किया। फिर से धन्यवाद, Merci boucoup – Ahmad

6

का उपयोग कर इसे पकड़ने के लिए अनुमति दे सकते हैं आप कर सकते हैं जब तक अनुच्छेद तालिका में नहीं है तब तक सेल विधि को कॉल न करें। यह निर्धारित करने के लिए कि श्रेणी एक तालिका में है या नहीं, आपको एक अलग विधि का उपयोग करने की आवश्यकता है।

आप उपयोग कर सकते हैं ...

paragraph.Range.Tables.Count > 0 

... या ...

paragraph.Range.Information(wdWithinTable) 

ध्यान दें कि दूसरा एक और अधिक स्पष्ट है, लेकिन वास्तव में धीमी (केवल एक समस्या है, तो है आप इसे एक लूप के अंदर कर रहे हैं)।

+0

'पैराग्राफ। रेंज.Tables.Count> 0' ने किया (यहां तक ​​कि .NET में Word Interop के साथ) :) – JanDotNet

10

आप उपयोग कर सकते हैं Information property:

If Selection.Information(wdWithInTable) Then 
    'What ever you'd like to do 
End If 

इसलिए आप किसी भी मैनुअल तंत्र को पकड़ने त्रुटि जरूरत नहीं है।

संबंधित मुद्दे