From ab060c294ec1f2bf7c59e6ea5edc4b78e006ac10 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Wed, 8 Apr 2015 19:51:49 +0200 Subject: TableRef: handle column range Change-Id: Iab87cc3fb2b21b53303e46a227f3a1ae35a3ab6d --- sc/source/core/tool/compiler.cxx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'sc') diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 791a9a3b7481..30f1c5ac7959 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -4922,14 +4922,28 @@ bool ScCompiler::HandleTableRef() { if (bColumnRange) { + bGotToken = false; // obtain at least a close hereafter // Limit range to specified columns. ScRange aColRange( ScAddress::INITIALIZE_INVALID ); switch (mpToken->GetType()) { case svSingleRef: { - ScAddress aRef( mpToken->GetSingleRef()->toAbs( aPos)); - aColRange.aStart = aColRange.aEnd = aRef; + aColRange.aStart = aColRange.aEnd = mpToken->GetSingleRef()->toAbs( aPos); + if ( (bGotToken = GetToken()) && mpToken->GetOpCode() == ocTableRefClose && + (bGotToken = GetToken()) && mpToken->GetOpCode() == ocRange && + (bGotToken = GetToken()) && mpToken->GetOpCode() == ocTableRefOpen && + (bGotToken = GetToken()) && mpToken->GetOpCode() == ocPush) + { + if (mpToken->GetType() != svSingleRef) + aColRange = ScRange( ScAddress::INITIALIZE_INVALID); + else + { + bGotToken = false; // obtain at least a close hereafter + aColRange.aEnd = mpToken->GetSingleRef()->toAbs( aPos); + aColRange.Justify(); + } + } } break; case svDoubleRef: @@ -4959,7 +4973,7 @@ bool ScCompiler::HandleTableRef() { SetError( errNoRef); } - if (bColumnRange) + if (bColumnRange && !bGotToken) { if ((bGotToken = GetToken()) && mpToken->GetOpCode() == ocTableRefClose) { -- cgit