2012-08-30 8 views
8

मैं एक्सेल शीट की स्वरूपित श्रेणी का चयन करना चाहता हूं। पिछले और पहली पंक्ति मैं निम्नलिखित कार्यों का उपयोग को परिभाषित करने के लिए: फॉर्मूला इस तरह दिखना चाहिए:वीबीए: चर द्वारा श्रेणी का चयन

lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count 
lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 

अगले चरण में मैं इस क्षेत्र का चयन करना चाहते

Range(cells(1, 1), cells(lastRow, lastColumn).Select 

बहरहाल, यह है काम नहीं कर रहा। शायद किसी को पता है कि इसमें क्या गलत है। आपका बहुत बहुत धन्यवाद!

+0

वास्तव में क्या काम नहीं कर रहा है? मैंने यादृच्छिक डेटा के साथ बी 2 से डी 4 को भरने की कोशिश की और आपके कोड ने ए 1 से डी 4 का चयन किया। क्या आप यही उम्मीद नहीं करेंगे? – ssarabando

उत्तर

6

तुम सिर्फ इस्तेमाल किया श्रेणी का चयन करना चाहते हैं, का उपयोग

ActiveSheet.UsedRange.Select 

आप इस्तेमाल किया श्रृंखला के अंत करने के लिए A1 से चयन करना चाहते हैं, तो आप इस

With ActiveSheet 
    .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Select 
End With 
तरह SpecialCells विधि का उपयोग कर सकते हैं

कभी-कभी एक्सेल अंतिम सेल के बारे में भ्रमित हो जाता है। वास्तविक वास्तविक रेंज की तुलना में यह कभी भी छोटी सी सीमा नहीं है, लेकिन कुछ कोशिकाओं को हटा दिए जाने पर यह बड़ा हो सकता है। इससे बचने के लिए, आप असली अंतिम सेल खोजने के लिए ढूँढें और तारांकन वाइल्डकार्ड का उपयोग कर सकते हैं।

Dim rLastCell As Range 

With Sheet1 
    Set rLastCell = .Cells.Find("*", .Cells(1, 1), xlValues, xlPart, , xlPrevious) 

    .Range(.Cells(1, 1), rLastCell).Select 
End With 

अंत में, सुनिश्चित करें कि आप केवल तभी चुन रहे हैं जब आपको वास्तव में आवश्यकता हो। एक्सेल वीबीए में आपको जो कुछ करना है, वह आप इसे पहले चुनने के बजाय सीधे रेंज पर कर सकते हैं।

.Range(.Cells(1, 1), rLastCell).Select 
Selection.Font.Bold = True 

के बजाय आप

.Range(.Cells(1,1), rLastCells).Font.Bold = True 
3

आप एक करीबी कोष्टक भूल रहे हैं कर सकते हैं, अर्थात आप Range() बंद नहीं कर रहे हैं।

इस Range(cells(1, 1), cells(lastRow, lastColumn)).Select

प्रयास करें लेकिन क्या तुम सच में संभव विकल्पों कि आपको बेहतर सेवा कर सकते हैं के लिए डिक Kusleika से अन्य जवाब पर गौर करना चाहिए। विशेष रूप से, ActiveSheet.UsedRange.Select जिसमें आपके कोड के समान अंत परिणाम है।

22

मैं 'सापेक्ष संदर्भ' के साथ एक मैक्रो दर्ज की गई और यह मैं क्या मिल गया है:

Range("F10").Select 
ActiveCell.Offset(0, 3).Range("A1:D11").Select 

मैं यहाँ क्या सोचा: सीमा चयन उद्धरण में है, तो VBA वास्तव में एक STRING चाहता है और कोशिकाओं बाहर की व्याख्या इसके बारे में निम्नलिखित कोशिश की गई:

Dim MyRange as String 
MyRange = "A1:D11" 
Range(MyRange).Select 

और यह काम किया :) यानी ..बस अपने वैरिएबल का उपयोग कर एक स्ट्रिंग बनाने के लिए, एक STRING चर के रूप में यह आयाम यह सुनिश्चित कर लें और एक्सेल सही इसके बारे में बंद पढ़ा जाएगा;)

परीक्षण किया के बाद और पाया काम कर रहे:

Sub Macro04() 

Dim Copyrange As String 

Startrow = 1 
Lastrow = 11 
Let Copyrange = "A" & Startrow & ":" & "D" & Lastrow 
Range(Copyrange).Select 
End Sub 
1

आप उन्हें एक में बदल रहे हैं पता लेकिन कोशिकाओं (#, #) का उपयोग करता पूर्णांक आदानों आदानों का पता नहीं तो बस का उपयोग lastRow = ActiveSheet.UsedRange.Rows.count और lastColumn = ActiveSheet.UsedRange.Columns.Count

1

मैं का उपयोग कर की कोशिश की:

Range(cells(1, 1), cells(lastRow, lastColumn)).Select 

जहां lastRow और lastColumn पूर्णांक हैं, लेकिन रन-टाइम त्रुटि 1004 प्राप्त हुई। मैं एक पुराने वीबी (6.5) का उपयोग कर रहा हूं।

क्या काम किया है निम्नलिखित का इस्तेमाल किया गया:

Range(Chr(64 + firstColumn) & firstRow & ":" & Chr(64 + lastColumn) & firstColumn).Select. 
+1

असल में पहले कॉलम को अंतिम पंक्ति ==> रेंज (Chr (64 + firstColumn) और firstRow & ":" और Chr (64 + lastColumn) और lastRow) पढ़ना चाहिए। .Selec –

7

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

यह काम किया है, हालांकि:

Range(Cells(1, 1).Address(), Cells(lastRow, lastColumn).Address()).Select 

यही कारण है कि सीमा की उम्मीद करने के लिए सेल के संख्यात्मक स्थान है, जो A1 स्वरूप है परिवर्तित करने की देखभाल की।

+0

धन्यवाद, मैंने पूरी सुबह बिताया है कि कैसे ठीक किया जाए इस वजह से एक वाक्यविन्यास मुद्दा। :) – Michelle

+0

धन्यवाद, आपने मेरा दिन बचाया! –