vba - रेंज क्यों काम करती है, लेकिन सेल नहीं?



range cells (1)

समस्या यह है कि Cells अयोग्य है, जिसका अर्थ है कि जिन कक्षों पर ये कोशिका संदर्भित होती है, उस पर निर्भर करता है कि आपका कोड कहां है। किसी भी समय आप Range या Cells या Rows या UsedRange Range या किसी रेंज ऑब्जेक्ट को रिटर्न करते हैं, और आप यह निर्दिष्ट नहीं करते कि किस शीट पर है, शीट को निम्नानुसार निर्दिष्ट किया जाता है:

  • एक शीट के क्लास मॉड्यूल में: उस शीट की परवाह किए बिना सक्रिय क्या है
  • किसी अन्य मॉड्यूल में: ActiveSheet

आप Range संदर्भ को अर्हता प्राप्त करते हैं, लेकिन Cells संदर्भ अयोग्य है और संभवतः एक्टिव शीट पर इशारा कर रहा है। यह लेखन की तरह है

ThisWorkbook.Worksheets(1).Range(ActiveSheet.Cells(1, 1), ActiveSheetCells(2, 2)).Value

जो निश्चित रूप से कोई मतलब नहीं बनाते हैं जब तक कि वर्डबुक। वर्कशीट्स (1) सक्रिय होने का नहीं होता है मैं अक्सर ब्लॉक के साथ उपयोग करना पसंद करता हूं ताकि मुझे यकीन हो कि सब कुछ पूरी तरह से योग्य है।

With Sheets(1)
    .Range(.Cells(1,1), .Cells(2,2)).Value = "something"
End With

लेकिन आप दो अलग-अलग शीट्स का उल्लेख करते हैं, तो आप शॉर्ट शीट वैरिएबल का उपयोग कर बेहतर रहेंगे जैसे:

Dim shSource As Worksheet
Dim shDest As Worksheet

Set shSource = ThisWorkbook.Worksheets(1)
Set shDest = Workbooks("myBook").Worksheets(1)

shDest.Range(shDest.Cells(1, 1), shDest.Cells(2, 2)).Value = _
    shSource.Range(shSource.Cells(1, 1), shSource.Cells(2, 2)).Value

लेकिन वास्तव में, यदि आप Cells तर्कों को हार्डकोड करते हैं, तो आप उस तरह की सफाई कर सकते हैं

shDest.Cells(1, 1).Resize(2, 2).Value = shSource.Cells(1, 1).Resize(2, 2).Value

मैं मूल्यों को एक सीमा से दूसरे स्थान पर निर्दिष्ट करके कुछ डेटा एक वर्कबुक से दूसरी में स्थानांतरित करने की कोशिश कर रहा हूं जब मैं गंतव्य श्रेणी (श्रेणी ("A1: B2")) को निर्दिष्ट करने के लिए सामान्य कोड सिंटैक्स का उपयोग करता हूं, तो मेरा कोड काम करता है, लेकिन अगर मैं रेंज का उपयोग करने की कोशिश करता हूं, सेल वाक्यविन्यास (रेंज (सेल (1,1), कक्ष (2 , 2))) मेरा कोड काम नहीं करता

मैं गंतव्य कार्यपुस्तिका को सक्रिय करता हूं (ActiveWorkbook) और सोर्स वर्कबुक (यह वर्कबुक) में कोड चल रहा है।

यह कोड काम करता है:

ActiveWorkbook.Worksheets(1).Range("A1:B2").Value _
= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value

लेकिन यह कोड नहीं है:

ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value _
= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value

मुझे जो त्रुटि मिलती है वह रन-टाइम एरर '1004': अनुप्रयोग-परिभाषित या वस्तु-परिभाषित त्रुटि।

क्या किसी को पता है कि सेल ऑब्जेक्ट का उपयोग करने के कारण मुझे समस्याएं आ रही हैं, या यदि मुझे कोई अन्य समस्या है जिसके बारे में मुझे पता नहीं है?