/ / 32 और 64 बिट एक्सेल VBA दिनांक हैंडलिंग के बीच अंतर के लिए कैसे समायोजित करें? - vba, एक्सेल-vba, एक्सेल

32 और 64 बिट एक्सेल वीबीए दिनांक हैंडलिंग के बीच अंतर के लिए कैसे समायोजित करें? - वीबीए, एक्सेल-वीबीए, एक्सेल

मुसीबत:

64 बिट एक्सेल VBA के पास संख्याओं को बदलने की एक अभ्यस्त आदत होती है, जब उस सरणी को एक सीमा में सौंपा जाता है। दूसरी ओर, 32 बिट VBA, दिनांक प्रारूप को संरक्षित करता है।

उदाहरण:

विभिन्न तिथि से निपटने के लिए उदाहरण कोड का एक त्वरित बिट है:

Sub test()
Dim arr(0 to 1) As Variant
arr(0) = "Text"
arr(1) = #9/12/2007#
ActiveSheet.Range("A1:B1") = arr
End Sub

(ध्यान दें कि यदि एकल दिनांक मान का उपयोग किया जाता है तो दिनांक 64 बिट एक्सेल में परिवर्तित नहीं होते हैं; यह आवश्यक है कि पहले पाठ मान मौजूद हो)

परिणाम:

जब 32 बिट एक्सेल में चलाया जाता है, तो आउटपुट होता है Text, 9/12/2007

जब 64 बिट एक्सेल में चलाया जाता है, तो आउटपुट होता है Text, 39337

यह ऐसा है जैसे कि 64 बिट VBA सभी रेंज ऑब्जेक्ट के लिए केवल Value2 गुण का उपयोग करता है।

सवाल:

कैसे मैं 32 बिट वीबीए की तरह व्यवहार करने के लिए 64 बिट वीबीए प्राप्त कर सकता हूं, जो सभी ऐर लिखता है।

बस एक अच्छी तरह से इरादे से सिर बंद करने के लिएप्रतिक्रिया: मुझे पता है कि अंतर्निहित सूत्र उन कोशिकाओं के बीच समान रहता है। 32 बिट एक्सेल, हालांकि, स्वचालित रूप से उचित कोशिकाओं को एक दिनांक प्रारूप में सेट करता है जो मेरे कोड को बहुत सरल करता है।

उत्तर:

उत्तर № 1 के लिए 1

मुझे इस तरह की समस्या पहले से थी और यह सुनिश्चित करके हल किया गया था कि सेल प्रारूप हमेशा दिनांक स्वरूप पर सेट हो।

इस तरह कुछ चाल चलाना चाहिए:

Range("A1").Select
Selection.Format = "long date"