आप Module1
नामक एक मॉड्यूल में इस कोड है कहते हैं:क्या वीबीए में टूटा हुआ है?
Option Explicit
Private Type TSomething
Foo As Integer
Bar As Integer
End Type
Public Something As TSomething
बराबर सी # कोड में यदि आप Something
क्षेत्र public
, कोड अब संकलन होता हो पाता है क्योंकि की असंगत पहुंच, - प्रकार क्षेत्र के क्षेत्र से कम पहुंच योग्य क्षेत्र का। जो समझ में आता है।
VBA में हालांकि आप Module2
में इस कोड को हो सकता है:
Sub DoSomething()
Module1.Something.Bar = 42
Debug.Print Module1.Something.Bar
End Sub
और तुम IntelliSense मिलता है जबकि उसे लिखने, और यह संकलित, और यह चलता है, और यह 42
आउटपुट।
क्यों? COM स्टैंडपॉइंट से यह कैसे काम करता है? क्या यह भाषा चश्मे का हिस्सा है?
Module2 में, आप प्रकार का एक चर 'Module1.TSomething' को परिभाषित करने और' Module1.Something' है कि प्रदान कर सकते हैं ? –
@ सिमॉनफोर्सबर्ग संकलन त्रुटि (अपेक्षित के रूप में) - "उपयोगकर्ता-डिफिंट किए गए प्रकार को परिभाषित नहीं किया गया" ... दूसरे शब्दों में, प्रकार * उपयोग करने के लिए * दृश्यमान है, लेकिन नहीं * घोषणाओं के लिए * ... –
जावा काम करता है exaclty लगता है, यह सवाल जावा के बारे में नहीं है, लेकिन वैसे भी। यह मुझे समझ में आता है, लेकिन फिर ... मैं जावा-लड़का हूं। –