जब उस टैब को बंद किया गया तो वर्कशीट_ स्क्रिप्ट स्क्रिप्ट त्रुटि


0

मैंने डेटा लिपि के ताज़ा होने पर संख्या के आधार पर विभिन्न रंगीन आकृतियों को प्रदर्शित करने के लिए निम्न स्क्रिप्ट बनाई, और यह काम करता है, लेकिन जब मैं टैब को स्विच करता हूं या किसी अन्य कार्यपुस्तिका को खोलता हूं, तो यह त्रुटि तब देता है जब ताज़ा वस्तु नहीं मिली और निम्न पंक्ति को हाइलाइट करती है:

ActiveSheet.Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 1

मुझे लगा कि यह "ActiveSheet" संदर्भ के कारण था इसलिए मैंने इसे वास्तविक वर्कशीट नाम से बदल दिया और यह अभी भी काम करता है लेकिन फिर भी त्रुटि देता है।

Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 1

मुझसे यहां क्या गलत हो रहा है? इसके अलावा, यदि आपको कोई कोड दिखाई देता है जिसे सरल बनाया जा सकता है, तो मेरा वीबीएस कौशल सबसे अच्छा नहीं है। कोड निम्नानुसार है:

Private Sub Worksheet_Calculate()
Dim Xrg As Range, Yrg As Range

Set Xrg = Range("K31")
Set Yrg = Range("K32")

For Each aCell In Xrg
    If Not Intersect(Xrg, Range("K31")) Is Nothing Then
        If Range("K31").Value = 0 Then
            If Rows("25:25").EntireRow.Hidden = False Then
            Rows("25:25").EntireRow.Hidden = True
            End If
            ElseIf Range("K31").Value <> 0 Then
            If Rows("25:25").EntireRow.Hidden = True Then
            Rows("25:25").EntireRow.Hidden = False
            End If
        End If
    End If
Next
For Each aCell In Yrg
    If Range("K32").Value < 55 Then
    Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("Util 1").Visible = True
    Worksheets("Outbound").Shapes("Util 2").Visible = False
    Worksheets("Outbound").Shapes("Util 3").Visible = False
    Worksheets("Outbound").Shapes("Util 4").Visible = False
    Worksheets("Outbound").Shapes("Util 5").Visible = False
    End If
    If Range("K32").Value >= 55 And Range("K32").Value < 65 Then
    Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("Util 1").Visible = False
    Worksheets("Outbound").Shapes("Util 2").Visible = True
    Worksheets("Outbound").Shapes("Util 3").Visible = False
    Worksheets("Outbound").Shapes("Util 4").Visible = False
    Worksheets("Outbound").Shapes("Util 5").Visible = False
    End If
    If Range("K32").Value >= 65 And Range("K32").Value < 75 Then
    Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 1
    Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 1
    Worksheets("Outbound").Shapes("Util 1").Visible = False
    Worksheets("Outbound").Shapes("Util 2").Visible = False
    Worksheets("Outbound").Shapes("Util 3").Visible = True
    Worksheets("Outbound").Shapes("Util 4").Visible = False
    Worksheets("Outbound").Shapes("Util 5").Visible = False
    End If
    If Range("K32").Value >= 75 And Range("K32").Value < 85 Then
    Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("Util 1").Visible = False
    Worksheets("Outbound").Shapes("Util 2").Visible = False
    Worksheets("Outbound").Shapes("Util 3").Visible = False
    Worksheets("Outbound").Shapes("Util 4").Visible = True
    Worksheets("Outbound").Shapes("Util 5").Visible = False
    End If
    If Range("K32").Value >= 85 Then
    Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 2
    Worksheets("Outbound").Shapes("Util 1").Visible = False
    Worksheets("Outbound").Shapes("Util 2").Visible = False
    Worksheets("Outbound").Shapes("Util 3").Visible = False
    Worksheets("Outbound").Shapes("Util 4").Visible = False
    Worksheets("Outbound").Shapes("Util 5").Visible = True
    End If
Next
End Sub

मुझे लगता है कि मैंने वास्तव में इसे खुद तय किया है। केवल संदर्भों को पूरी तरह से हटाने के लिए नहीं सोचा था!
मैथ्यू बॉलर

एक सुझाव यह एक करने के लिए किया जाएगा SELECT CASEपर Range("K32").Valueसभी के बजाय IFबयान।
रे जूना

क्या आप इस बात का उदाहरण दे सकते हैं कि मैं "SELECT CASE" का उपयोग कैसे करूँगा। मैंने इसे देखा है और वास्तव में इसके चारों ओर अपना सिर नहीं लपेट सकता।
मैथ्यू बाऊलर

मैंने एक उदाहरण पोस्ट किया है कि आप इसे नीचे कैसे कर सकते हैं।
रे जूना

जवाबों:


0

एक सुधार जो आप अपने कोड में कर सकते हैं, वह है कि आप अपने IFस्टेटमेंट को बदल सकते हैं SELECT CASEऔर अपनी फॉर्मेटिंग को पहले से शुरू कर सकते हैं, जिससे यह देखना आसान हो जाता है कि प्रत्येक मामले के लिए क्या बदला जा रहा है।

Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 2
Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 2
Worksheets("Outbound").Shapes("Util 1").Visible = False
Worksheets("Outbound").Shapes("Util 2").Visible = False
Worksheets("Outbound").Shapes("Util 3").Visible = False
Worksheets("Outbound").Shapes("Util 4").Visible = False
Worksheets("Outbound").Shapes("Util 5").Visible = False

Select Case Range("K32").Value
    Case Is < 55
       Worksheets("Outbound").Shapes("Util 1").Visible = True
    Case 55 To 64
       Worksheets("Outbound").Shapes("Util 2").Visible = True
    Case 65 to 74
       Worksheets("Outbound").Shapes("TextBox 16").TextFrame.Characters.Font.ColorIndex = 1
       Worksheets("Outbound").Shapes("TextBox 43").TextFrame.Characters.Font.ColorIndex = 1
       Worksheets("Outbound").Shapes("Util 3").Visible = True
    Case 75 to 84
       Worksheets("Outbound").Shapes("Util 4").Visible = True
    Case Is > 84
       Worksheets("Outbound").Shapes("Util 5").Visible = True
End Select
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.