एक्सेल में शीट्स / वर्कशीट्स के साथ काम करने के लिए यह अंतिम गाइड है।
इस गाइड के निचले भाग में, हमने शीट के साथ काम करने के लिए सामान्य कमांड की एक चीट शीट बनाई है।
शीट्स बनाम। कार्यपत्रक
VBA का उपयोग करके पत्रक को संदर्भित करने के दो तरीके हैं। पहला पत्रक वस्तु के साथ है:
1 | पत्रक ("पत्रक 1")। सक्रिय करें |
दूसरा वर्कशीट ऑब्जेक्ट के साथ है:
1 | वर्कशीट्स ("शीट 1")। सक्रिय करें |
99% बार, ये दो वस्तुएं समान होती हैं। वास्तव में, यदि आपने VBA कोड उदाहरणों के लिए ऑनलाइन खोज की है, तो आपने शायद दोनों वस्तुओं का उपयोग देखा होगा। यहाँ अंतर है:
पत्रक संग्रह में कार्यपत्रक और चार्ट पत्रक शामिल हैं।
इसलिए यदि आप नियमित वर्कशीट और चार्ट शीट शामिल करना चाहते हैं तो शीट्स का उपयोग करें। यदि आप चार्ट शीट को बाहर करना चाहते हैं तो वर्कशीट का उपयोग करें। इस गाइड के बाकी हिस्सों के लिए हम शीट्स और वर्कशीट्स का परस्पर उपयोग करेंगे।
संदर्भ पत्रक
पत्रक को संदर्भित करने के कई अलग-अलग तरीके हैं:
- सक्रिय पत्रक
- शीट टैब का नाम
- शीट इंडेक्स नंबर
- शीट कोड नाम
सक्रिय पत्रक
एक्टिवशीट वह शीट है जो वर्तमान में सक्रिय है। दूसरे शब्दों में, यदि आपने अपना कोड रोका और एक्सेल को देखा, तो यह वह शीट है जो दिखाई दे रही है। नीचे दिया गया कोड उदाहरण ActiveSheet नाम के साथ एक संदेशबॉक्स प्रदर्शित करेगा।
1 | MsgBox ActiveSheet.Name |
शीट का नाम
आप शायद शीट्स को उनके टैब नाम से संदर्भित करने से सबसे अधिक परिचित हैं:
1 | पत्रक ("टैबनाम")। सक्रिय करें |
शीट इंडेक्स नंबर
शीट इंडेक्स नंबर कार्यपुस्तिका में शीट की स्थिति है। 1 पहली शीट है। 2 दूसरी शीट आदि है:
1 | पत्रक(1).सक्रिय करें |
शीट इंडेक्स नंबर - वर्कबुक में अंतिम शीट
कार्यपुस्तिका में अंतिम पत्रक को संदर्भित करने के लिए, पत्रक का उपयोग करें। अंतिम सूचकांक संख्या प्राप्त करने के लिए गणना करें:
1 | पत्रक (पत्रक। गणना)। सक्रिय करें |
शीट "कोड नाम"
वीबीए में शीट कोड नाम इसका ऑब्जेक्ट नाम है:
1 | कोडनाम। सक्रिय करें |
अन्य कार्यपुस्तिकाओं में संदर्भ पत्रक
अन्य कार्यपुस्तिकाओं में पत्रक का संदर्भ देना भी आसान है। ऐसा करने के लिए, आपको कार्यपुस्तिका ऑब्जेक्ट का उपयोग करने की आवश्यकता है:
1 | वर्कबुक ("VBA_Examples.xlsm")। वर्कशीट्स ("शीट 1")। सक्रिय करें |
जरूरी: इससे पहले कि आप इसके पत्रक को संदर्भित कर सकें, कार्यपुस्तिका खुली होनी चाहिए।
सक्रिय करें बनाम शीट का चयन करें
एक अन्य लेख में हम शीट को सक्रिय करने और चुनने के बारे में सब कुछ चर्चा करते हैं। संक्षिप्त संस्करण यह है:
जब आप किसी पत्रक को सक्रिय करते हैं तो वह सक्रिय पत्रक बन जाता है। यह वह शीट है जिसे आप अपने एक्सेल प्रोग्राम को देखने पर देखेंगे। एक समय में केवल एक शीट सक्रिय की जा सकती है।
एक पत्रक सक्रिय करें
1 | पत्रक ("पत्रक 1")। सक्रिय करें |
जब आप किसी पत्रक का चयन करते हैं, तो वह भी सक्रिय पत्रक बन जाता है। हालाँकि, आप एक साथ कई शीट का चयन कर सकते हैं। जब एक साथ कई शीट्स का चयन किया जाता है, तो "टॉप" शीट एक्टिवशीट होती है। हालाँकि, आप चयनित शीट में ActiveSheet को टॉगल कर सकते हैं।
एक शीट चुनें
1 | शीट्स ("शीट 1")। चुनें |
एकाधिक पत्रक चुनें
एक साथ कई शीट का चयन करने के लिए एक सरणी का उपयोग करें:
1 | वर्कशीट्स (ऐरे ("शीट 2", "शीट 3"))। चुनें |
वर्कशीट वैरिएबल
एक वर्कशीट को एक वेरिएबल में असाइन करें जिससे आप वर्कशीट को इसके वेरिएबल नाम से संदर्भित कर सकते हैं। यह टाइपिंग की बहुत बचत कर सकता है और आपके कोड को पढ़ने में आसान बना सकता है। ऐसे कई अन्य कारण भी हैं जिनके कारण आप चरों का उपयोग करना चाह सकते हैं।
वर्कशीट वैरिएबल घोषित करने के लिए:
1 | वर्कशीट के रूप में डिम WS |
एक वर्कशीट को एक चर के लिए असाइन करें:
1 | सेट ws = शीट्स ("शीट 1") |
अब आप अपने कोड में वर्कशीट वैरिएबल का संदर्भ दे सकते हैं:
1 | ws.सक्रिय करें |
वर्कबुक में सभी शीट्स के माध्यम से लूप
जब आप किसी कार्यपुस्तिका में सभी कार्यपत्रकों के माध्यम से लूप करना चाहते हैं तो वर्कशीट चर आवश्यक हैं। ऐसा करने का सबसे आसान तरीका है:
12345 | वर्कशीट के रूप में डिम डब्ल्यूएसवर्कशीट में प्रत्येक ws के लिएMsgBox ws.nameअगला ws |
यह कोड कार्यपुस्तिका में सभी कार्यपत्रकों के माध्यम से लूप करेगा, प्रत्येक कार्यपत्रक का नाम संदेश बॉक्स में प्रदर्शित करेगा। एक साथ कई वर्कशीट को लॉक/अनलॉक या छुपा/अनहाइड करते समय वर्कबुक में सभी शीट्स के माध्यम से लूप करना बहुत उपयोगी होता है।
वर्कशीट सुरक्षा
कार्यपुस्तिका सुरक्षा
कार्यपुस्तिका सुरक्षा कार्यपुस्तिका को कार्यपत्रकों को जोड़ने, हटाने, स्थानांतरित करने या छिपाने जैसे संरचनात्मक परिवर्तनों से लॉक करती है।
आप VBA का उपयोग करके कार्यपुस्तिका सुरक्षा चालू कर सकते हैं:
1 | ActiveWorkbook.Protect पासवर्ड: = "पासवर्ड" |
या कार्यपुस्तिका सुरक्षा अक्षम करें:
1 | ActiveWorkbook.UnProtect पासवर्ड: = "पासवर्ड" |
नोट: आप पासवर्ड तर्क को छोड़ कर बिना पासवर्ड के भी सुरक्षित/असुरक्षित कर सकते हैं:
1 | एक्टिव वर्कबुक.प्रोटेक्ट |
वर्कशीट सुरक्षा
कार्यपत्रक-स्तरीय सुरक्षा व्यक्तिगत कार्यपत्रकों में परिवर्तनों को रोकती है।
वर्कशीट को सुरक्षित रखें
1 | वर्कशीट ("शीट 1")। "पासवर्ड" को सुरक्षित रखें |
असुरक्षित वर्कशीट
1 | वर्कशीट्स ("शीट 1")। असुरक्षित "पासवर्ड" |
वर्कशीट की सुरक्षा करते समय कई विकल्प होते हैं (स्वरूपण परिवर्तनों की अनुमति दें, उपयोगकर्ता को पंक्तियों को सम्मिलित करने की अनुमति दें, आदि) हम आपकी वांछित सेटिंग्स को रिकॉर्ड करने के लिए मैक्रो रिकॉर्डर का उपयोग करने की सलाह देते हैं।
हम यहां वर्कशीट सुरक्षा पर अधिक विस्तार से चर्चा करते हैं।
वर्कशीट दर्शनीय संपत्ति
आप पहले से ही जानते होंगे कि कार्यपत्रकों को छिपाया जा सकता है:
वास्तव में तीन वर्कशीट दृश्यता सेटिंग्स हैं: दृश्यमान, छिपी हुई, और बहुत छिपा हुआ।वर्कशीट टैब क्षेत्र (ऊपर दिखाया गया है) में राइट-क्लिक करके किसी भी नियमित एक्सेल उपयोगकर्ता द्वारा छिपी हुई शीट को छिपाया जा सकता है। वेरीहिडन शीट को केवल वीबीए कोड के साथ या वीबीए संपादक के भीतर से छिपाया जा सकता है। कार्यपत्रकों को छिपाने/खोलने के लिए निम्नलिखित कोड उदाहरणों का उपयोग करें:
वर्कशीट दिखाएँ
1 | वर्कशीट ("शीट 1")। दृश्यमान = xlSheetVisible |
वर्कशीट छुपाएं
1 | वर्कशीट्स ("शीट 1")। दृश्यमान = xlSheetHidden |
वर्कशीट बहुत छुपाएं
1 | वर्कशीट ("शीट 1")। दृश्यमान = xlSheetVeryHidden |
वर्कशीट-स्तर की घटनाएँ
ईवेंट ट्रिगर होते हैं जो "ईवेंट प्रक्रियाएं" चलाने का कारण बन सकते हैं। उदाहरण के लिए, आप हर बार वर्कशीट पर किसी भी सेल को बदलने या वर्कशीट के सक्रिय होने पर कोड चलाने का कारण बन सकते हैं।
वर्कशीट इवेंट प्रक्रियाओं को वर्कशीट मॉड्यूल में रखा जाना चाहिए:
कई वर्कशीट इवेंट हैं। पूरी सूची देखने के लिए, वर्कशीट मॉड्यूल पर जाएं, पहले ड्रॉप-डाउन से "वर्कशीट" चुनें। फिर इसे मॉड्यूल में डालने के लिए दूसरे ड्रॉप-डाउन से एक ईवेंट प्रक्रिया का चयन करना।
कार्यपत्रक सक्रिय घटना
वर्कशीट सक्रिय ईवेंट हर बार वर्कशीट खोले जाने पर चलते हैं।
123 | निजी उप वर्कशीट_एक्टिवेट ()रेंज ("ए 1")। चुनेंअंत उप |
यह कोड हर बार कार्यपत्रक खोले जाने पर कक्ष A1 (दृश्य क्षेत्र को कार्यपत्रक के शीर्ष-बाईं ओर रीसेट करना) का चयन करेगा।
वर्कशीट चेंज इवेंट
जब भी कार्यपत्रक पर कोई कक्ष मान बदला जाता है, तो कार्यपत्रक परिवर्तन ईवेंट चलते हैं। अधिक जानकारी के लिए वर्कशीट चेंज इवेंट्स के बारे में हमारा ट्यूटोरियल पढ़ें।
वर्कशीट चीट शीट
नीचे आपको VBA में शीट के साथ काम करने के लिए सामान्य कोड उदाहरणों वाली एक चीट शीट मिलेगी
वीबीए वर्कशीट्स चीटशीट
वीबीए वर्कशीट्स चीटशीटविवरण | कोड उदाहरण |
---|---|
संदर्भ और सक्रिय पत्रक | |
टैब का नाम | पत्रक ("इनपुट")। सक्रिय करें |
वीबीए कोड नाम | पत्रक 1. सक्रिय करें |
सूचकांक स्थिति | पत्रक(1).सक्रिय करें |
शीट का चयन करें | |
शीट का चयन करें | पत्रक ("इनपुट")। चुनें |
चर पर सेट करें | वर्कशीट के रूप में डिम डब्ल्यूएस सेट ws = एक्टिवशीट |
नाम / नाम बदलें | ActiveSheet.Name = "नया नाम" |
अगली शीट | एक्टिवशीट.अगला.सक्रिय करें |
सभी शीट्स के माध्यम से लूप | वर्कशीट के रूप में डिम डब्ल्यूएस वर्कशीट में प्रत्येक ws के लिए संदेशबॉक्स ws.name अगला ws |
चयनित पत्रक के माध्यम से लूप | वर्कशीट के रूप में डिम WS ActiveWindow.SelectedSheets में प्रत्येक ws के लिए MsgBox ws.Name अगला ws |
एक्टिवशीट प्राप्त करें | MsgBox ActiveSheet.Name |
शीट जोड़ें | पत्रक।जोड़ें |
शीट और नाम जोड़ें | पत्रक.जोड़ें.नाम = "नई पत्रक" |
सेल से नाम के साथ शीट जोड़ें | पत्रक। जोड़ें। नाम = श्रेणी ("a3")। मान |
एक के बाद एक शीट जोड़ें | पत्रक। बाद में जोड़ें: = पत्रक ("इनपुट") |
शीट के बाद और नाम जोड़ें | पत्रक। जोड़ें (बाद: = पत्रक ("इनपुट"))। नाम = "न्यूशीट" |
पहले शीट जोड़ें और नाम | शीट्स। जोड़ें (पहले: = शीट्स ("इनपुट"))। नाम = "न्यूशीट" |
कार्यपुस्तिका के अंत में पत्रक जोड़ें | पत्रक। बाद में जोड़ें: = पत्रक (पत्रक। गणना) |
कार्यपुस्तिका की शुरुआत में शीट जोड़ें | शीट्स। जोड़ें (पहले: = शीट्स (1))। नाम = "फर्स्टशीट" |
वेरिएबल में शीट जोड़ें | वर्कशीट के रूप में डिम WS ws सेट करें = पत्रक। जोड़ें |
वर्कशीट कॉपी करें | |
कार्यपुस्तिका के अंत में पत्रक ले जाएँ | शीट्स ("शीट 1")। इसके बाद ले जाएं: = शीट्स (शीट्स। गणना) |
नई कार्यपुस्तिका के लिए | शीट्स ("शीट 1")। कॉपी करें |
नई कार्यपुस्तिका के लिए चयनित पत्रक | ActiveWindow.SelectedSheets.Copy |
एक और शीट से पहले | शीट्स ("शीट 1")। पहले कॉपी करें: = शीट्स ("शीट 2") |
पहली शीट से पहले | शीट्स ("शीट 1")। पहले कॉपी करें: = शीट्स(1) |
अंतिम शीट के बाद | शीट्स ("शीट 1")। इसके बाद कॉपी करें: = शीट्स (शीट्स। गणना) |
कॉपी और नाम | शीट्स ("शीट 1")। इसके बाद कॉपी करें: = शीट्स (शीट्स। गणना) ActiveSheet.Name = "लास्टशीट" |
सेल वैल्यू से कॉपी और नाम | शीट्स ("शीट 1")। इसके बाद कॉपी करें: = शीट्स (शीट्स। गणना) ActiveSheet.Name = रेंज ("A1")। मान |
एक और कार्यपुस्तिका के लिए | शीट्स ("शीट 1")। पहले कॉपी करें: = वर्कबुक ("उदाहरण। xlsm")। शीट्स (1) |
पत्रक छुपाएं/दिखाएं | |
शीट छुपाएं | शीट्स ("शीट 1")। दृश्यमान = गलत या शीट्स ("शीट 1")। दृश्यमान = xlSheetHidden |
शीट दिखाएँ | पत्रक ("पत्रक 1")। दृश्यमान = सत्य या शीट्स ("शीट 1")। दृश्यमान = xlSheetVisible |
बहुत छुपाएं पत्रक | शीट्स ("शीट 1")। दृश्यमान = xlSheetVeryHidden |
पत्रक हटाएं या साफ़ करें | |
शीट हटाएं | पत्रक ("पत्रक 1")। हटाएं |
शीट हटाएं (त्रुटि प्रबंधन) | त्रुटि पर फिर से शुरू करें अगला पत्रक ("पत्रक 1")। हटाएं त्रुटि गोटो 0 . पर |
शीट हटाएं (कोई संकेत नहीं) | एप्लिकेशन। डिस्प्ले अलर्ट = गलत पत्रक ("पत्रक 1")। हटाएं एप्लिकेशन.डिस्प्लेअलर्ट्स = ट्रू |
साफ़ शीट | शीट्स ("शीट 1")। सेल। साफ़ करें |
केवल शीट सामग्री साफ़ करें | पत्रक ("पत्रक 1")। कक्ष। साफ़ सामग्री |
साफ़ शीट प्रयुक्त रेंज | शीट्स ("शीट 1")। यूज्ड रेंज। क्लियर |
शीट्स को सुरक्षित या असुरक्षित करें | |
असुरक्षित (कोई पासवर्ड नहीं) | शीट्स ("शीट 1")। असुरक्षित |
असुरक्षित (पासवर्ड) | पत्रक ("शीट 1")। असुरक्षित "पासवर्ड" |
सुरक्षित रखें (कोई पासवर्ड नहीं) | शीट्स ("शीट 1")। प्रोटेक्ट |
सुरक्षित रखें (पासवर्ड) | शीट्स ("शीट 1")। "पासवर्ड" को सुरक्षित रखें |
सुरक्षित रखें लेकिन वीबीए एक्सेस की अनुमति दें | पत्रक ("पत्रक 1")। केवल उपयोगकर्ता इंटरफ़ेस को सुरक्षित रखें: = सत्य |
सभी शीट्स को असुरक्षित करें | वर्कशीट के रूप में डिम WS वर्कशीट में प्रत्येक ws के लिए ws.असुरक्षित "पासवर्ड" अगला ws |