Seltsamerweise ist VBAs Nothing
es no dasselbe wie Unassigned
, Null
o Empty
Sie können also z.B. nicht verwenden:
// 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!');
Verwenden Sie stattdessen diese Funktion:
function VarIsNothing(V: OleVariant): Boolean;
begin
Result :=
(TVarData(V).VType = varDispatch)
and
(TVarData(V).VDispatch = nil);
end;
// ...
if (VarIsNothing(MyRange)) then
Update
Offensichtlich sind die Quellen der RTL-Einheit Variants.pas
haben sich zwischen Delphi 5 und 2007 geändert. Laut @mghie (siehe Kommentare), ist die Funktion VarIsEmpty
hätte die Arbeit in D5 erledigt. In D2007 scheint dies jedoch nicht mehr der Fall zu sein, so dass Sie die oben genannte Funktion wahrscheinlich wieder benötigen.
Beachten Sie auch, dass VBAs Nothing
ist wahrscheinlich ein ganz besonderer Fall; ich glaube nicht, dass man ihn bei der Automatisierung allzu oft antrifft.