मुझे पता है कि एक वर्कबुक की सभी वर्कशीट्स लूप करने के लिए, और कैसे एक बार बाहर निकलने के लिए मुझे एक 'अंत झंडा' कार्यपत्रक तक पहुँचने:मैं वर्कशीट्स के सबसेट के माध्यम से कैसे लूप कर सकता हूं?
For Each ThisWorkSheet In Worksheets
If ThisWorkSheet.Name = "FlagEnd" Then Exit For
MsgBox "This worksheet name is: " & ThisWorkSheet.Name
Next
हालांकि मैं नहीं मिल सकता है पाश एक 'प्रारंभ पर शुरू करने के लिए फ्लैग 'वर्कशीट (या स्टार्ट-फ्लैग वर्कशीट के ठीक बाद वर्कशीट पर भी बेहतर है। उदाहरण के लिए ध्वजांकित स्टार्ट/एंड वर्कशीट अन्य वर्कशीट्स के समूह के बीच में हैं, इसलिए शुरुआत या अंत ट्रैवर्सिंग काम करने योग्य नहीं है।
'फ्लैगस्टार्ट' शीट से पहले सैकड़ों वर्कशीट हो सकती हैं, इसलिए मुझे वास्तव में दाएं शीट पर शुरू करने की आवश्यकता है।
की कोशिश की:
Set ThisWorkSheet = Sheets("FlagNew")
और
For Each Sheets("FlagNew") In Worksheets
विचार?
समाधान: माथीस बहुत करीब था, लेकिन डेंडरारी कस्टम एंडिंग इंडेक्स के साथ छोटा कदम था। मैंने वास्तव में अपने अंतिम समाधान का पता लगाया, लेकिन क्रेडिट देना चाहता था। यहां मेरा अंतिम समाधान था:
Private Sub CommandButtonLoopThruFlaggedSheets_Click()
' determine current bounds
Dim StartIndex, EndIndex, LoopIndex As Integer
StartIndex = Sheets("FlagNew").Index + 1
EndIndex = Sheets("FlagEnd").Index - 1
For LoopIndex = StartIndex To EndIndex
MsgBox "this worksheet is: " & Sheets(LoopIndex).Name
' code here
Next LoopIndex
End Sub
किर्क, तो आप इस के बारे में पता नहीं हो सकता है, लेकिन अगर आप अंत में एक प्रकार के साथ एक ही लाइन पर 3 चर घोषित, केवल पिछले चर वास्तव में, उस प्रकार लेता है दूसरों वेरिएंट के रूप में अंत। यदि आपके पास एक ही पंक्ति पर आपकी सभी घोषणाएं हैं, तो आपको "डिम स्टार्ट इंडेक्स को इंटीजर, एंडइन्डेक्स इंटीजर, लूपइंडेक्स इंटीजर के रूप में" निर्दिष्ट करने की आवश्यकता है। – dendarii
दोह, फिर से शॉर्टकट के साथ खुद को जला दिया! धन्यवाद, मुझे इसके बारे में पता नहीं था, मैं इसे बदल दूंगा। –