diff --git a/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/Excel/Cells/XLCell.cs index 90e0637..143af66 100644 --- a/ClosedXML/Excel/Cells/XLCell.cs +++ b/ClosedXML/Excel/Cells/XLCell.cs @@ -993,7 +993,7 @@ { //Note: We have to check if the cell is part of a merged range. If so we have to clear the whole range //Checking if called from range to avoid stack overflow - if (IsMerged() && !calledFromRange) + if (!calledFromRange && IsMerged()) { using (var asRange = AsRange()) { @@ -1187,7 +1187,7 @@ public Boolean IsMerged() { - return Worksheet.Internals.MergedRanges.Any(r => r.Contains(this)); + return Worksheet.Internals.MergedRanges.Contains(this); } public Boolean IsEmpty() @@ -1277,7 +1277,7 @@ get { using (var asRange = AsRange()) - return Worksheet.DataValidations.Any(dv => dv.Ranges.Contains(asRange) && dv.IsDirty()); + return Worksheet.DataValidations.Any(dv => dv.IsDirty() && dv.Ranges.Contains(asRange)); } } diff --git a/ClosedXML/Excel/Ranges/XLRanges.cs b/ClosedXML/Excel/Ranges/XLRanges.cs index b783762..2fc41c0 100644 --- a/ClosedXML/Excel/Ranges/XLRanges.cs +++ b/ClosedXML/Excel/Ranges/XLRanges.cs @@ -72,6 +72,11 @@ } } + public Boolean Contains(IXLCell cell) + { + return _ranges.Any(r => !r.RangeAddress.IsInvalid && r.Contains(cell)); + } + public Boolean Contains(IXLRange range) { return _ranges.Any(r => !r.RangeAddress.IsInvalid && r.Contains(range));