मजे की बात है, VBA के Nothing
नहींUnassigned
, Null
या Empty
के रूप में ही, है, इसलिए आप उपयोग नहीं कर सकते जैसे:
// Worksheet is a TExcelWorksheet or OleVariant coupled to an open worksheet
MyRange := Worksheet.Range['MyRangeInTheWorksheet', EmptyParam]
if (MyRange = Null) then // won't work!
MsgBox('The range doesn''t exist!');
इसकी बजाय यह कार्य का उपयोग करें:
function VarIsNothing(V: OleVariant): Boolean;
begin
Result :=
(TVarData(V).VType = varDispatch)
and
(TVarData(V).VDispatch = nil);
end;
// ...
if (VarIsNothing(MyRange)) then
अद्यतन
जाहिर है, आरटीएल इकाई Variants.pas
के स्रोत डेल्फी 5 और 2007 के बीच बदल गए हैं। @ माघी (टिप्पणियां देखें) के अनुसार, कार्य VarIsEmpty
ने डी 5 में काम किया होगा। हालांकि, डी 2007 में, यह अब मामला प्रतीत नहीं होता है, इसलिए आपको शायद उपरोक्त फ़ंक्शन की आवश्यकता होगी।
इसके अलावा, ध्यान दें कि VBA के Nothing
शायद काफी एक विशेष मामला है; मुझे नहीं लगता कि एक स्वचालन के साथ अक्सर इसका सामना करता है।
? आप सही हे! मैंने पूरी तरह से अनदेखा किया! मैंने आपका जवाब स्वीकार कर लिया है, और मेरा स्रोत कोड बदल देगा ;-) धन्यवाद एक गुच्छा! – onnodb