मैं वीबीए से एक्सेल वर्कशीट की शीर्ष पंक्ति को प्रोग्रामेटिक रूप से फ्रीज करना चाहता हूं। अंतिम लक्ष्य एक्सेल 2007 में View > Freeze Panes > Freeze Top Row
कमांड के समान प्रभाव उत्पन्न करना है ताकि वर्कशीट की शीर्ष पंक्ति जमे हुए हो और उपयोगकर्ता डेटाशीट की शीर्ष पंक्ति देख सकें, भले ही वे डेटा के माध्यम से स्क्रॉल करें।एक्सेल 2007 वीबीए में एक्सेल वर्कशीट की शीर्ष पंक्ति को प्रोग्रामेटिक रूप से कैसे जमा किया जा सकता है?
उत्तर
Rows("2:2").Select
ActiveWindow.FreezePanes = True
एक अलग प्रभाव के लिए एक अलग सीमा का चयन करें, वैसे ही आप मैन्युअल रूप से करेंगे। "फ्रीज टॉप रो" वास्तव में एक्सेल 2007 (और ऊपर) में एक शॉर्टकट नया है, इसमें एक्सेल के पुराने संस्करणों की तुलना में कोई अतिरिक्त कार्यक्षमता नहीं है।
तोमालक ने आपको पहले ही एक सही उत्तर दिया है, लेकिन मैं यह जोड़ना चाहूंगा कि ज्यादातर बार जब आप यूजर इंटरफेस में एक निश्चित कार्रवाई करने के लिए आवश्यक वीबीए कोड जानना चाहते हैं तो यह रिकॉर्ड करना एक अच्छा विचार है मैक्रो।
इस मामले में रिबन के डेवलपर टैब पर रिकॉर्ड मैक्रो पर क्लिक करें, शीर्ष पंक्ति को फ्रीज करें और फिर रिकॉर्डिंग को रोकें।
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
हां। यह सही जवाब है। वर्कशीट के किसी भी भाग का चयन करने की आवश्यकता नहीं है। – HuckIt
अच्छा जवाब है, लेकिन मुझे उत्सुकता है कि आखिरी कथन को साथ में क्यों नहीं रखा गया था ... स्टेटमेंट के साथ समाप्त करें। – Jeeped
@ जीपड: यह एक्सेल मैक्रो रिकॉर्डर का सिर्फ कच्चा आउटपुट है। बेशक, आप 'साथ' ब्लॉक में लाइन शामिल कर सकते हैं। –
दर्ज की गई मैक्रो के साथ समस्या यह अंतर्निहित कार्रवाई के साथ समस्या के रूप में एक ही है: एक्सेल निम्नलिखित मैक्रो आप के लिए दर्ज की गई जो भी काम करता होगा एक्सेल शीर्ष दिखाई फ्रीज करने के लिए चुनता पंक्ति, वास्तविक शीर्ष पंक्ति के बजाय जहां हेडर जानकारी मिल सकती है।
इस मामले में एक मैक्रो का उद्देश्य वास्तविक शीर्ष पंक्ति को स्थिर करना है। जब मैं पंक्ति # 405592 देख रहा हूं और मुझे कॉलम के लिए हेडर की जांच करने की आवश्यकता है (क्योंकि जब मैं फ़ाइल खोलता हूं तो पंक्तियों को फ्रीज करना भूल जाता है), मुझे शीर्ष पर स्क्रॉल करना होगा, शीर्ष पंक्ति को फ्रीज करना होगा, फिर अपना रास्ता वापस ढूंढना होगा पंक्ति # 405592 फिर से। चूंकि मेरा मानना है कि यह बेवकूफ व्यवहार है, मैं चाहता हूं कि मैक्रो इसे सही करे, लेकिन जैसा कि मैंने कहा, रिकॉर्ड किया गया मैक्रो सिर्फ एक ही बेवकूफ व्यवहार की नकल करता है।
मैं कार्यालय 2011 (2 मिनट बाद) का उपयोग कर रहा के लिए मैक ओएस एक्स शेर
अद्यतन:
मैं यहाँ एक समाधान पाया: http://www.ozgrid.com/forum/showthread.php?t=19692
Dim r As Range
Set r = ActiveCell
Range("A2").Select
With ActiveWindow
.FreezePanes = False
.ScrollRow = 1
.ScrollColumn = 1
.FreezePanes = True
.ScrollRow = r.Row
End With
r.Select
मेरे जैसे किसी अन्य नए शौक के लिए: मैं रेंज ("ए 9") को और कुछ भी बदले बिना शीर्ष 8 पंक्तियों (जहां मेरी रिपोर्ट "डैशबोर्ड" रहता है) को फ्रीज करने में सक्षम था। – Sean
बस एक ही समस्या मारा .. किसी कारण से, फ्रीजपेन्स कमांड ने स्क्रीन के केंद्र में क्रॉसहेयर दिखाई देने का कारण बना दिया। यह शुरू हो गया है कि मैंने स्क्रीन अपडेटिंग बंद कर दिया था! निम्न कोड के साथ हल:
Application.ScreenUpdating = True
Cells(2, 1).Select
ActiveWindow.FreezePanes = True
अब यह ठीक काम करता है।
Rows("2:2").Select
ActiveWindow.FreezePanes = True
शीर्ष पंक्ति को स्थिर करने का यह सबसे आसान तरीका है। FreezePanes
के लिए नियम यह है कि यह आपके द्वारा चुने गए सेल से ऊपरी बाएं कोने को फ्रीज करेगा। उदाहरण के लिए, यदि आप सी 10 को हाइलाइट करते हैं, तो यह कॉलम बी और सी, पंक्तियों 9 और 10 के बीच जमा हो जाएगा। इसलिए जब आप पंक्ति 2 को हाइलाइट करते हैं, तो यह वास्तव में पंक्तियों 1 और 2 के बीच स्थिर होता है जो शीर्ष पंक्ति है।
इसके अलावा, .SplitColumn
या .SplitRow
आपकी खिड़की को विभाजित कर देगा जब आप इसे अनफ़्रीज़ करते हैं जो मुझे पसंद नहीं है।
इस प्रश्न को एक्सेल के स्वयं के वीबीए के बाहर उपयोग के दायरे में विस्तारित करने के लिए, ActiveWindow property को Excel.Application object के बच्चे के रूप में संबोधित किया जाना चाहिए। Access से एक Excel कार्यपुस्तिका बनाने के लिए
उदाहरण:
एक और कार्यालय आवेदन के VBA प्रोजेक्ट में Excel.Application object का उपयोग करना (अपने स्वयं के संस्करण के लिए या समतुल्य) माइक्रोसॉफ्ट एक्सेल 15.0 वस्तु पुस्तकालय जोड़ने के लिए की आवश्यकता होगी।
Option Explicit
Sub xls_Build__Report()
Dim xlApp As Excel.Application, ws As Worksheet, wb As Workbook
Dim fn As String
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
xlApp.Visible = True
Set wb = xlApp.Workbooks.Add
With wb
.Sheets(1).Name = "Report"
With .Sheets("Report")
'report generation here
End With
'This is where the Freeze Pane is dealt with
'Freezes top row
With xlApp.ActiveWindow
.SplitColumn = 0
.SplitRow = 1
.FreezePanes = True
End With
fn = CurrentProject.Path & "\Reports\Report_" & Format(Date, "yyyymmdd") & ".xlsx"
If CBool(Len(Dir(fn, vbNormal))) Then Kill fn
.SaveAs FileName:=fn, FileFormat:=xlOpenXMLWorkbook
End With
Close_and_Quit:
wb.Close False
xlApp.Quit
End Sub
कोर प्रक्रिया वास्तव में सिर्फ पूर्व में सबमिट जवाब की पुनरावृत्ति है, लेकिन मैंने सोचा कि यह महत्वपूर्ण था ActiveWindow से निपटने के लिए कैसे जब आप Excel के अपने VBA के भीतर नहीं हैं प्रदर्शित करने के लिए। हालांकि यहां कोड वीबीए है, यह सीधे अन्य भाषाओं और प्लेटफार्मों के लिए ट्रांसक्रिप्ट करने योग्य होना चाहिए।
आप 'सेट xlApp = नया एक्सेल। एप्लिकेशन' का उपयोग भी कर सकते हैं, या यहां तक कि 'Dim xlApp के रूप में नया Excel.Aplication' भी उपयोग कर सकते हैं। –
- 1. वीबीए (एक्सेल 2007)
- 2. प्रोग्रामेटिक रूप से एक्सेल 2007 शीट्स बनाने
- 3. वीबीए एक्सेल 2002 को बदलता है -> एक्सेल 2007
- 4. एक्सेल वीबीए
- 5. एक्सेल वीबीए
- 6. प्रोग्रामेटिक रूप से एक्सेल शीट की पंक्ति ऊंचाई
- 7. एक्सेल वीबीए
- 8. एक्सेल 2007 में वीबीए से चेकबॉक्स तक कैसे पहुंचे
- 9. वीबीए (एक्सेल)
- 10. एक्सेल वीबीए
- 11. एक्सेल में वीबीए
- 12. संदर्भ एक्सेल वर्कशीट गतिशील रूप से
- 13. एक्सेल इंटरऑप: _ वर्कशीट या वर्कशीट?
- 14. नाम से संदर्भ एक्सेल वर्कशीट?
- 15. एक्सेल 2007 वीबीए ऐरे आकार सीमा
- 16. एक्सेल (2007) वीबीए - इसमें उद्धरण के साथ फॉर्मूला
- 17. वीबीए एक्सेल
- 18. एक्सेल वीबीए
- 19. एक्सेल वीबीए
- 20. एक्सेल वीबीए
- 21. एक्सेल वीबीए
- 22. एक्सेल वीबीए
- 23. एक्सेल वर्कशीट को एसक्यूएल स्क्रिप्ट
- 24. एक्सेल वीबीए
- 25. एक्सेल वीबीए
- 26. एक्सेल वीबीए
- 27. एक्सेल वीबीए
- 28. क्या एक्सेल वीबीए VB.NET
- 29. एक्सेल वीबीए
- 30. एक्सेल वीबीए
ऐसा लगता है कि स्क्रीन अपडेटिंग काम करने के लिए इस पर काम करना है, लेकिन अन्यथा महान है। धन्यवाद! –
मैं स्पष्ट हूं कि शीर्ष पंक्ति का चयन करके आप शीर्ष पंक्ति को कैसे ठंडा कर रहे हैं। शीर्ष पंक्ति को फ्रीज करने के लिए, चयन 'पंक्तियां (2) 'या' पंक्तियां ("2: 2") होनी चाहिए। वर्कशीट के चार चतुर्भुज विभाजन में 'पंक्ति ("1: 1")' का चयन करना। – Jeeped
@ जीपड एम) - बिल्कुल! अच्छा खोज, धन्यवाद! – Tomalak