मुझे नीचे मैक्रो में एक समस्या का सामना करना पड़ा है

Sub RefreshAction()
    Range("b7").Select
    Application.Run "RefreshCurrentSelection"
    Application.OnTime (Now() + TimeValue("00:00:05")), "thisworkbook.Action"
End Sub

जब मैं पहली बार मैक्रो चलाता हूं तो सेल रीफ्रेश हो जाता है, लेकिन मुझे इसके तुरंत बाद त्रुटि संदेश मिल जाता है

संदेश: मैक्रो "C \ Desktop \ XYZ.xlsm 'नहीं चला सकता!

मैं पहले ही "ट्रस्ट सेंटर-> ट्रस्ट सेंटर सेटिंग्स-> मैक्रो सेटिंग्स-> सभी मैक्रोज़ सक्षम कर चुका हूं और यह काम नहीं किया।

"ट्रस्ट एक्सेस टू वीबीए प्रोजेक्ट ऑब्जेक्ट मॉडल" बॉक्स पर भी क्लिक किया गया है।

2
fdt6243 16 नवम्बर 2015, 20:45

2 जवाब

सबसे बढ़िया उत्तर

अधिक जानकारी के लिए पूर्ण संदर्भ देखें: CPearson OnTime

पहला अंक , आपको उस समय को संग्रहीत करने की आवश्यकता है जिसे आप अपने OnTime विधि में इनपुट कर सकेंगे ताकि इसे रोका जा सके। (यहां मैंने सार्वजनिक समय-सारणी को दिनांक घोषित किया)

दूसरा बिंदु OnTime विधि का लगातार उपयोग करने के लिए, आपको अपनी समयबद्ध प्रक्रिया (यहां RefreshAllStaticData) के अंत में टाइमर को रीसेट करने की आवश्यकता है।

तो आपका पूरा कोड इस तरह दिखना चाहिए:

Public TimeToRun As Date 'so that TimeToRun can be used in both the functions

Sub RefreshAction()
    Range("b7").Select
    Application.Run "RefreshCurrentSelection"
    DoEvents
    'Store the next date of execution in TimeToRun
    TimeToRun = Now() + TimeValue("00:00:05")
    'Launch the next OnTime
    Application.OnTime TimeToRun, "RefreshAllStaticData"
End Sub


Sub RefreshAllStaticData()

'--++-- Place your code here, as it is now --++--

'----Call RefreshAction to reset the OnTime method
'---------to another 5 seconds and keep "looping"
RefreshAction

End Sub


Sub Kill_OnTime()
'Launch this to stop the OnTime method
Application.OnTime _
    earliesttime:=TimeToRun, _
    procedure:="RefreshAllStaticData", _
    schedule:=False
End Sub
1
Community 8 मई 2018, 21:49

सबसे पहले, यहाँ एक त्रुटि का एक स्नैपशॉट है, जब आप एक कार्यपत्रक (मॉड्यूल नहीं) से ऑनटाइम चलाने का प्रयास करते हैं जैसा कि मैं समझाऊंगा। मुझे यह त्रुटि भी मिल रही थी और यह जानने की कोशिश कर रहा था कि क्यों। मैक्रो

यह एक सुरक्षा त्रुटि की तरह दिखता है, लेकिन इस मामले में यह बिल्कुल सामान्य सुरक्षा त्रुटि नहीं है।

टाइमर पर कोड चलाने के लिए आपको इसे VBA मॉड्यूल में जोड़ना होगा। VisualBasic एडिटर पर जाएं और VBAProject (पुस्तक) पर राइट क्लिक करें। एक्सेल में यह निम्न की तरह दिखता है:

मॉड्यूल जोड़ें एक बार मॉड्यूल जुड़ जाने के बाद आप अपना टाइमर कोड वहां जोड़ देंगे।

चूँकि आप हर 5 सेकंड में RefreshAction को कॉल करना चाहते हैं, इसलिए आप निम्नलिखित कुछ करना चाहेंगे:

Sub StartProcess()
    Debug.Print Now()
    Application.OnTime Now() + TimeValue("00:00:05"), "RefreshAction", Schedule = True
End Sub

Sub RefreshAction()
    Application.EnableEvents = True
    Debug.Print Now() + TimeValue("00:00:05")
    Application.OnTime Now() + TimeValue("00:00:05"), "RefreshAction", Schedule = True
End Sub

मैं आपको उस कोड को जोड़ने दूंगा जो आप चाहते हैं कि वह हर बार रीफ़्रेशएशन सबरूटीन में करे।

यहाँ यह मॉड्यूल में कैसा दिखेगा। सुनिश्चित करें कि आपका पता चलता है कि यह एक मॉड्यूल में है जैसा कि यह छवि में है: मॉड्यूल इन vba

इसके अलावा, मैंने इसे काफी परतदार पाया। यदि आपके पास ऑनटाइम कॉल में कुछ भी गलत है, तो यह चुपचाप विफल हो जाएगा। मेरे कोड की प्रतिलिपि बनाएँ (मैंने इसका परीक्षण किया) और इसे पहले आज़माएँ। एक बार जब यह चलता है, तो अपने कोड को रीफ्रेशएशन उप में जोड़ें।

StartProcess ()

स्टार्टप्रोसेस को चलाए जा रहे चीज़ को शुरू करने के लिए।

इसके अतिरिक्त ऑड थिंग

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

6
raddevus 13 मार्च 2017, 21:45