2016-09-24 6 views
9

ठीक इतनी के रूप में मंद ws, मुझे पता है मैं यह कर सकता:VBA कार्यपत्रकों (नहीं कार्यपत्रक)

Dim ws as worksheet 
Set ws = thisworkbook.worksheets("Sheet1") 

और फिर ws कार्यपत्रक वस्तु के साथ मेरी कल्पना चीजें करते

मैं भी जानता हूँ कि मैं यह कर सकते हैं Dim wss as worksheets और worksheets("Sheet1") का उपयोग करके वर्कशीट ऑब्जेक्ट देता है। तो निम्नलिखित काम क्यों नहीं करता है?

Dim wss as worksheets 
Dim ws as worksheet 
Set wss = thisworkbook.worksheets 
Set ws = wss("Sheet1") 

मैं भी कोशिश की है:

Dim wss as worksheets 
Dim ws as worksheet 
Set ws = thisworkbook.wss("Sheet1") 

लेकिन जैसे मैं नाम बदलने/"कार्यपत्रकों" जो पूरी तरह गलत लगता है छोटा करने के लिए कोशिश कर रहा हूँ बाद बस लग रहा है। मैं वर्कबुक की वर्कशीट्स को एक वर्कशीट ऑब्जेक्ट में Wss नामक करने की कोशिश कर रहा हूं। यह किसी भी चीज से heirachy समझने की कोशिश कर लेकिन कार्यात्मक प्रयोजनों के लिए मैं से कार्यपुस्तिका एक्स सभी कार्यपत्रकों समाहित करने के लिए तो मैं बस set ws = wb.worksheets(1)

कहने के बजाय ws = wss(1) कर सकता है WSS पाने के लिए कोशिश कर रहा हूँ के बारे में अधिक है कि यहां तक ​​कि संभव या मैं कर रहा हूँ वर्कशीट्स/वर्कशीट रिश्ते को गलतफहमी?

+0

यह आम तौर पर सबसे आसान इस तरह सवालों के जवाब द्वारा (https://msdn.microsoft.com/en-us/library/ [ऑब्जेक्ट ब्राउज़र का उपयोग कर] को खोजने के लिए है कार्यालय/gg251681.aspx) और विधि या संपत्ति परिभाषाओं को देख रहे हैं। – Comintern

+0

मैंने शीट्स और वर्कशीट्स के सदस्यों को देखा था और वे दोनों एक जैसे हैं। सहायता फ़ाइल कहती है कि 'वर्कशीट्स' वर्कशीट संग्रह लौटाती है, जिसे मैंने ठीक से सोचा था क्योंकि मुझे चार्ट में दिलचस्पी नहीं है। मैं सिर्फ वर्कशीट ऑब्जेक्ट के साथ वर्कबुक। वर्कशीट्स संग्रह का उपयोग करना चाहता था। मुझे लगता है कि मुझे कुछ आसान याद आ रहा है इसलिए सोचा कि मैं देखता हूं कि इस मंच पर क्या प्रस्ताव है! मैं यहां पर सबसे रचनात्मक कोड और/या सरल स्पष्टीकरण देखता हूं (आधिकारिक दस्तावेज़ीकरण की तुलना में)। – jamheadart

+1

प्रलेखन भ्रामक है। यदि आप 'शीट्स' और 'वर्कशीट्स' * गुणों को देखते हैं * आप देखेंगे कि वे दोनों 'शीट्स' ऑब्जेक्ट लौटाते हैं। – Comintern

उत्तर

9

आप एक Sheets वस्तु

Dim wss As Sheets 
Dim ws As Worksheet 

Set wss = ThisWorkbook.Worksheets 
Set ws = wss("Sheet1") 

इस वजह से Workbook वस्तु की Worksheets संपत्ति एक Sheets संग्रह देता है, यानी एक संग्रह है कि कार्यपुस्तिका के दोनों Worksheets और Charts वस्तु शामिल के रूप में wss घोषित करना चाहिए

चाहिए आपको अपने WorkbookWorksheets केवल (Charts) के संग्रह की आवश्यकता नहीं है जैसे ws = wss (1) या पसंद वें एन आप Collection वस्तु के साथ निम्नलिखित तरीके को अपनाने सकता है

Option Explicit 

Sub main() 
    Dim wss As Collection 
    Dim ws As Worksheet 

    Set wss = GetWorkSheets 
    Set ws = wss("Sheet1") 
    Set ws = wss(1) 
End Sub 

Function GetWorkSheets() As Collection 
    Dim wss As New Collection 
    Dim ws As Worksheet 

    For Each ws In ThisWorkbook.Worksheets 
     wss.add ws, ws.Name 
    Next ws 
    Set GetWorkSheets = wss 
End Function 
+0

ठीक है जो मुझे समझने के करीब ले जाता है। यह अभी भी मेरे लिए थोड़ा उलझन में है, इसलिए कोई 'शीट्स' संग्रह वापस करने के लिए 'wss = thisWorkbook.Sheets' सेट कर सकता है, लेकिन यदि आप' wss = thisWorkbook.Worksheets 'सेट करते हैं जो' शीट्स 'संग्रह भी देता है? – jamheadart

+0

नहीं, यह एक अमान्य असाइनमेंट होगा क्योंकि एक्सेल ऑब्जेक्ट मॉडल 'वर्कशीट्स' संपत्ति के अनुसार 'वर्कबुक' ऑब्जेक्ट 'शीट्स' संग्रह लौटाता है। इस प्रकार 'सेट wss = thisWorkbook.Worksheets' के परिणाम' टाइप मिस्चैच त्रुटि ' – user3598756

+0

बहुत बढ़िया हैं और फ़ंक्शन के साथ संपादन अद्यतन के लिए धन्यवाद। तुम लोग कमाल के हो। – jamheadart