2010-10-04 19 views
5

के साथ एक्सेल रेंज स्वरूपण सेट करें, मैंने पहले, कई एक्सेल कोशिकाओं की एक श्रृंखला को पॉप्युलेट करने के लिए एक संस्करण सरणी का उपयोग किया है।ऐरे

मुझे आश्चर्य है, क्या सेल स्वरूपण के साथ एक ही काम करने का कोई तरीका है? मैं सेल द्वारा सेल नहीं जाना चाहूंगा, और Excel श्रेणी प्राप्त करने के लिए कॉल की संख्या को कम करना अच्छा होगा ...

+0

मैं बहुत यकीन है कि आप एक बहु सेल रेंज स्वरूपण लागू करते हैं और न यह सेल-दर-सेल करने के लिए हो सकता है, लेकिन मैं नहीं है स्वरूपण का एक टन करो। शायद कोई ऐसा व्यक्ति जो वास्तविक जवाब देगा ... – jtolle

+0

वाह, मैंने पूरी तरह से सवाल को गलत समझा। लांस रॉबर्ट्स का जवाब मेरे लिए सही दिखता है, हालांकि। – jtolle

उत्तर

3

नहीं, आप प्रत्येक सेल को अलग से नहीं कर सकते हैं, हालांकि आप थोक असाइन कर सकते हैं एक पूरी श्रृंखला के लिए एक प्रारूप।

.NumberFormat को असाइन करने के लिए रेंज की संपत्ति है। यदि आप प्रारूप के रूप में असाइन करने के लिए तारों का एक संस्करण सरणी बनाते हैं, तो इसे सीमा तक असाइन करें, केवल पहला तत्व लागू हो जाता है (और यह सीमा के सभी कक्षों पर लागू होता है)।

Dim r As Range 
Dim v(1 To 3) As Variant 
Dim i As Integer 

Set r = Range("A1:A3") 
v(1) = "hh:mm:ss" 
v(2) = "General" 
v(3) = "$#,##0.00_);[Red]($#,##0.00)" 

For i = 1 to 3 
    r(i).NumberFormat = v(i) 
Next i 
+0

धन्यवाद - मुझे लगता है कि मैं सबसे अच्छा कर सकता था लूप था। यह वास्तव में अच्छा होगा अगर एमएस प्रारूपों को स्थापित करता है जैसे कि वे सरणी के संदर्भ में सेल मान करते हैं ... –

4

मैं ज्यादातर कर लांस क्या पता चलता है:

तो सबसे अच्छा तुम कर सकते पाश है। हालांकि, कुछ ऐसे मामले हैं जहां मैं सेट अप के प्रारूपों के साथ एक अलग, छुपी वर्कशीट बनाउंगा। तो मैं

wshHidden.Range("A1:D100").Copy 
wshReport.Range("A1:D100").PasteSpecial xlPasteFormats 

उसमें इसका ख्याल रखता है एक में गिरावट आती है। लेकिन आपके पास छिपी हुई चादर का ऊपरी भाग है।

0

उम्मीद है कि मैं सुरक्षित रूप से अनुमान लगा सकता हूं कि आप इसे प्रदर्शन कारणों से कर रहे हैं। जैसा ऊपर बताया गया है, यह वास्तव में संभव नहीं है कि आप सेल सामग्री के साथ ऐसा कर सकें।

हालांकि, यदि कोशिकाओं का स्वरूपण अक्सर आखिरी बार स्वरूपित होता है, तो प्रारूप को बदलने की आवश्यकता होती है, और केवल तभी बदलना बहुत तेज़ होता है।

यहां एक ऐसा कार्य है जो इसे कर सकता है। परीक्षणों (एक्सेल 2003) में, यह प्रारूप को हमेशा सेट करने से 8x-10x तेज चलता है, और यह स्क्रीन अपडेटिंग बंद होने के साथ होता है।

Sub SetProperty(ByRef obj As Object, propname, newvalue) 
    If CallByName(obj, propname, VbGet) <> newvalue Then 
     Call CallByName(obj, propname, VbLet, newvalue) 
    End If 
End Sub 

इसे इस तरह कॉल:

Call SetProperty(Cells(1,1).Font, "ColorIndex", 27) 
Call SetProperty(Cells(1,1).Borders, "Weight", xlMedium) 
etc 
संबंधित मुद्दे