diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/interpr4.cxx | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 1f789b96b333..5662baf5f2ac 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -3215,6 +3215,21 @@ void ScInterpreter::ScMacro() case svString: pPar->PutString( GetString() ); break; + case svExternalSingleRef: + { + ScExternalRefCache::TokenRef pToken; + PopExternalSingleRef(pToken); + if ( pToken->GetType() == svString ) + pPar->PutString( pToken->GetString() ); + else if ( pToken->GetType() == svDouble ) + pPar->PutDouble( pToken->GetDouble() ); + else + { + SetError( errIllegalArgument ); + bOk = false; + } + } + break; case svSingleRef: { ScAddress aAdr; @@ -3275,11 +3290,12 @@ void ScInterpreter::ScMacro() } } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); SCSIZE nC, nR; - if (pMat) + if (pMat && !nGlobalError) { pMat->GetDimensions(nC, nR); SbxDimArrayRef refArray = new SbxDimArray; |