2012-07-19 11 views
9
में एक सेल के लिए एक स्ट्रिंग लेखन

मैं "A1" सेल करने के लिए एक मूल्य लिखने की कोशिश कर रहा हूँ, लेकिन निम्न त्रुटि हो रही है:एक्सेल

Application-defined or object-defined error '1004'

मैं नेट पर कई समाधान की कोशिश की है, लेकिन कोई भी काम कर रहे हैं। मैं एक्सेल 2007 का उपयोग कर रहा हूं और फ़ाइल extensiton .xlsm है।

Sub varchanger() 
On Error GoTo Whoa 
Dim TxtRng As Range 

Worksheets("Game").Activate 
ActiveSheet.Unprotect 

Set TxtRng = ActiveWorkbook.Sheets("Game").Cells(1, 1) 
TxtRng.Value = "SubTotal" 

'Worksheets("Game").Range("A1") = "Asdf" 

LetsContinue: 
    Exit Sub 
Whoa: 
    MsgBox Err.number 
    Resume LetsContinue 
End Sub 

संपादित करें::

मेरे कोड इस प्रकार है के बाद मैं त्रुटि मिलती है अगर मैं सावधानी आइकन पर क्लिक करें और फिर चुनिंदा शो गणना इसकी ठीक से काम कर

+7

अगर मैं वोट से बाहर नहीं था, मैं 'के लिए +1 चाहते त्रुटि गोटो व्हाउ ' – LittleBobbyTables

+0

@LittleBobbyTables पर धन्यवाद। यह त्रुटि वास्तव में मुझे – knightrider

+0

से बाहर कर रही है मैंने आपके * सटीक * कोड को निष्पादित करने का प्रयास किया और यह मेरे एक्सेल 2003 और एक्सेल 2010 दोनों पर किसी भी समस्या के बिना भाग गया। क्षमा करें मेरे पास Excel 2007 को आजमाने की कोशिश नहीं है। –

उत्तर

12

मुझे लगता है कि आप शीट सुरक्षा पर जा रहे हैं। मैंने आपके कोड को थोड़ा सा सुव्यवस्थित किया है और स्पष्ट रूप से कार्यपुस्तिका और वर्कशीट ऑब्जेक्ट्स के संदर्भों को संदर्भित कर रहा हूं। अपने उदाहरण में, आप स्पष्ट रूप से कार्यपुस्तिका और शीट जब आप TxtRng वस्तु स्थापित कर रहे हैं का उल्लेख है, लेकिन आप चादर असुरक्षित नहीं है।

इस प्रयास करें:

Sub varchanger() 

    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim TxtRng As Range 

    Set wb = ActiveWorkbook 
    Set ws = wb.Sheets("Sheet1") 
    'or ws.Unprotect Password:="yourpass" 
    ws.Unprotect 

    Set TxtRng = ws.Range("A1") 
    TxtRng.Value = "SubTotal" 
    'http://stackoverflow.com/questions/8253776/worksheet-protection-set-using-ws-protect-but-doesnt-unprotect-using-the-menu 
    ' or ws.Protect Password:="yourpass" 
    ws.Protect 

End Sub 

अगर मैं बाहर टिप्पणी की ws.Unprotect साथ उप चलाने के लिए, मैं एक रन-टाइम त्रुटि 1004. मिल uncommenting (यह मानते हुए मैं पत्रक सुरक्षित है और सीमा बंद कर दिया है।) लाइन कोड को ठीक चलाने की अनुमति देता है।

नोट:

  1. मैं सीमा के लिए लिख के बाद फिर से स्थापित करने से शीट सुरक्षा कर रहा हूँ। मुझे लगता है कि अगर आप पहली जगह में शीट सुरक्षित रखते हैं तो आप ऐसा करना चाहते हैं। यदि आप आगे की प्रक्रिया के बाद बाद में सुरक्षा को फिर से स्थापित कर रहे हैं, तो आपको उस पंक्ति को हटाना होगा।
  2. मैं त्रुटि हैंडलर हटा दिया। एक्सेल त्रुटि संदेश आपको Err.number की तुलना में बहुत अधिक जानकारी देता है। एक बार जब आप अपना कोड काम कर लेते हैं और जो कुछ भी आप चाहते हैं उसे प्रदर्शित कर लेते हैं तो आप इसे वापस रख सकते हैं। जाहिर है आप Err.Description का भी उपयोग कर सकते हैं।
  3. Cells(1, 1) नोटेशन बड़ी मात्रा में दुःख का कारण बन सकता है। इसका उपयोग करके सावधान रहें। Range("A1") बहुत आसान मनुष्य को पार्स और माथे-थप्पड़ मारने गलतियों को रोकने के लिए जाता है करने के लिए है।
+0

की सहायता भी नहीं कर रहा है यह – knightrider

+0

भी काम नहीं कर रहा है त्रुटि विवरण क्या था? (पूर्ण त्रुटि संदेश, न केवल 1004) –

+0

एप्लिकेशन-परिभाषित या ऑब्जेक्ट-डिफ़ाइंड – knightrider

0

इस बजाय

कोशिश कदम

Set TxtRng = ActiveWorkbook.Sheets("Game").Range("A1")

अतिरिक्त

शायद फ़ाइल भ्रष्ट है - यह मेरे साथ कई बार हुआ है और एकमात्र समाधान सब कुछ एक नई फाइल में कॉपी करना है।

कृपया आप निम्नलिखित की कोशिश कर सकते हैं:

  • सहेजें एक नया xlsm फ़ाइल और यह "MyFullyQualified.xlsm" कॉल
  • कोई सुरक्षा के साथ एक पत्रक जोड़ें और यह कहते हैं "mySheet"
  • जोड़ें कार्यपुस्तिका के लिए मॉड्यूल और निम्नलिखित प्रक्रिया जोड़ें

क्या यह चलता है?

Sub varchanger() 

With Excel.Application 
    .ScreenUpdating = True 
    .Calculation = Excel.xlCalculationAutomatic 
    .EnableEvents = True 
End With 

On Error GoTo Whoa: 

    Dim myBook As Excel.Workbook 
    Dim mySheet As Excel.Worksheet 
    Dim Rng As Excel.Range 

    Set myBook = Excel.Workbooks("MyFullyQualified.xlsm") 
    Set mySheet = myBook.Worksheets("mySheet") 
    Set Rng = mySheet.Range("A1") 

    'ActiveSheet.Unprotect 


    Rng.Value = "SubTotal" 

    Excel.Workbooks("MyFullyQualified.xlsm").Worksheets("mySheet").Range("A1").Value = "Asdf" 

LetsContinue: 
     Exit Sub 
Whoa: 
     MsgBox Err.Number 
     GoTo LetsContinue 

End Sub 
+0

वही त्रुटि !!! त्रुटि 1004 – knightrider

+0

क्लासिक - कृपया एक्सेल को बार-बार चालू करें; शायद अपनी मशीन को फिर से बूट करें। – whytheq

+0

एक्सेल को बंद करने से मदद नहीं मिली। मैं – knightrider

0

मेरे पास आज कुछ क्रैनबेरी-वोदकास हैं इसलिए मुझे कुछ याद आ रहा है ... क्या सीमा आवश्यक है? क्यों उपयोग नहीं करें:

Activeworkbook.Sheets("Game").Range("A1").value = "Subtotal" 

क्या यह भी असफल हो जाता है?

ऐसा लगता है कि कुछ इसी तरह की कोशिश की:

'Worksheets("Game").Range("A1") = "Asdf" 

हालांकि, कार्यपत्रक एक संग्रह है, तो आप संदर्भ नहीं दे सकता "खेल"। मुझे लगता है कि आपको इसके बजाय शीट ऑब्जेक्ट का उपयोग करने की आवश्यकता है।

+0

@UberNublsTrue यह भी एक ही त्रुटि देता है – knightrider

1

की जगह रेंज ("A1") = "Asdf" साथ रेंज ("A1")। Value = "Asdf"