Unten steht der vereinfachte Code, der lediglich den String "A7" im Feld A7 voraussetzt, diesen auf verschiedene Weisen ausgibt und danach sucht.
Verwendet wird
aSheetA1 = oSheetA1.getCellRangeByPosition(0,0,60,999).getDataArray
Dabei ist mir aufgefallen:
1. Die Index-Syntax aSheetA1(6)(0) wird in Sub myPrint verstanden, in Main nicht (Syntaxfehler: Dimensionsangaben passen nicht zueinander)
2. Die Index-Syntax aSheetA1(6,0) wird in Main und myPrint verstanden, in Function MyMatchInCol führt sie zu einem Laufzeitfehler, Objektvariable nicht belegt
3. Die ungewöhnliche Syntax aSheetA1(6,dummy)(0) wird an allen drei Stellen verstanden und liefert korrekte Ergebnisse.
Kann mir das freundlicherweise jemand erklären?
Für einen zusätzlichen Tipp, wie man das Array auf die Größe des benutzten Tabellenbereichs begrenzen kann, wäre ich auch dankbar.
Code: Alles auswählen
Global Const dummy = 0
'arrays holding sheets
Global aSheetA1(0 to 60, 0 to 999) As String
Sub Main
'sheets
oSheetA1 = thisComponent.getSheets.getByName( "Tabelle1" )
'get sheets into arrays
aSheetA1 = oSheetA1.getCellRangeByPosition(0,0,60,999).getDataArray
'access field A7
print "Main 1",aSheetA1(6,dummy)(0) 'ok, but why?
'print "Main 2",aSheetA1(6)(0)      'Syntaxfehler: Dimensionsangaben passen nicht zueinander
print "Main 3",aSheetA1(6,0)        'ok here
myPrint(aSheetA1)
print "Wert A7 in Spalte A gefunden in Zeile",MyMatchInCol(aSheetA1,0,"A7")+1
End Sub
Sub myPrint (aSheet)
	print "myPrint 1",aSheet(6,dummy)(0) 'ok, but why?
	print "myPrint 2",aSheet(6)(0)       'ok here
	print "myPrint 3",aSheet(6,0)        'ok here
End Sub
Function MyMatchInCol(aSheet,iCol,sValue)
	found = 0
	ret   = 0
	for row = 0 To 999
		if aSheet(row)(iCol) = sValue then       'ok
		'if aSheet(row,iCol) = sValue then	      'Laufzeitfehler,Objektvariable nicht belegt
		'if aSheet(row,dummy)(iCol) = sValue then  'ok, but why?
			found = 1
			ret   = row
		 	exit for
		end if
	next row
	if found = 0 then
		print sValue,"not found in column",iCol
	end if
	MyMatchInCol = ret
End Function