[Gelöst] Ausgewählten Bereich auf benachbarte Zellen erweitern und Inhalt löschen

Alles zur Programmierung im OpenOffice.org
Antworten
LunaSolar
Beiträge: 5
Registriert: Mo 27. Aug 2018, 09:04

[Gelöst] Ausgewählten Bereich auf benachbarte Zellen erweitern und Inhalt löschen

Beitrag von LunaSolar » Mo 7. Jan 2019, 20:59

Hallo,

ich habe folgenden Code:

Code: Alles auswählen

Sub KopiereBereich

oDocument = ThisComponent
oSheet1 = oDocument.Sheets(1)

Quellbereich = oDocument.getCurrentSelection()
aDaten()=Quellbereich.getDataArray()
Quelle = Quellbereich.getRangeAddress
   
iZeilen = uBound(aDaten()) 'das DataArray besteht aus den Zeilen des Quellbereichs
iSpalten=uBound(aDaten(0)) 'die Spalten sind in jedem einzelnen Elementdes Arrays verpackt

'Zielbereich festlegen, hier: beginnend ab der Zelle C43
'Der Zielbereich muss dieselbe Größe haben, wie der Quellbereich
oZielRange=oSheet1.getCellRangeByPosition(2,42,2+iSpalten,42+iZeilen) 
oZielRange.setDataArray(aDaten())

'Inhalte vom Quellbereich löschen
Quellbereich.clearcontents(5) 

End Sub
Nach dem Kopieren der Zellinhalte von einem Tabellenblatt zu einem Anderen, wird der markierte Inhalt aus dem Quell-Tabellenblatt gelöscht. Nun hat es sich aber ergeben, dass in der Zelle / in den Zellen links vom markierten Bereich ebenfalls Inhalt vorhanden ist, der mitgelöscht werden soll. Wären es nur Zellen in einer Zeile könnte ich das Löschen des Inhalts über das Ansprechen der Zeile lösen. Wie mache ich es aber, wenn sich die Markierung über mehrere Zeilen erstreckt (z.B. B4:H10) und der Inhalt der Zellen A4:A10 mitgelöscht werden sollen. Sie sind nicht markiert. Kann ich sie in den Löschvorgung einschließen? Es soll immer der Inhalt der Zellen des markierten Bereichs und der Zellen links daneben gelöscht werden. Die Markierung ist variabel. Es wäre super, wenn mir hier jemand weiterhelfen könnte.

Vielen Dank
Luna
Zuletzt geändert von LunaSolar am Di 15. Jan 2019, 21:40, insgesamt 2-mal geändert.

craig
Beiträge: 126
Registriert: Sa 14. Mai 2016, 12:36

Re: Ausgewählten Bereich auf benachbarte Zellen erweitern und Ihnalt löschen

Beitrag von craig » Di 8. Jan 2019, 17:16

Hallo,

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit

Sub KopiereBereich
Dim oDocument as Object
Dim oSheet1 as Object
Dim oRange as Object
Dim oQuellbereich as Object
Dim oSelAddress as Object
Dim aDaten as Variant
Dim oZielRange as Object

Dim nStartRow as long
Dim nStartCol as long
Dim nEndRow as long
Dim nEndCol as long
Dim iZeilen as long
Dim iSpalten as long

oDocument = ThisComponent
oSheet1 = oDocument.Sheets(1)

oQuellbereich = oDocument.getCurrentSelection()

aDaten()=oQuellbereich.getDataArray()
oSelAddress = oQuellbereich.getRangeAddress

'mri oSelAddress
'mri oSheet1
	' Einlesen der absoluten Start- und Endpositionen der aktuellen Selektion
	With oSelAddress
		nStartRow = .StartRow
		nStartCol = .StartColumn
		nEndRow = .EndRow
		nEndCol = .EndColumn
	End With
   
iZeilen = uBound(aDaten()) 'das DataArray besteht aus den Zeilen des oQuellbereichs
iSpalten=uBound(aDaten(0)) 'die Spalten sind in jedem einzelnen Elementdes Arrays verpackt

'Zielbereich festlegen, hier: beginnend ab der Zelle C43
'Der Zielbereich muss dieselbe Größe haben, wie der oQuellbereich
oZielRange=oSheet1.getCellRangeByPosition(2,42,2+iSpalten,42+iZeilen) 
oZielRange.setDataArray(aDaten())
	
	' Wenn Selektion in Zelle A1 beginnt, dann
	if nStartCol = 0 And nStartRow = 0 then
		'Inhalte vom oQuellbereich löschen
		oQuellbereich.clearcontents(5) 
	' Wenn Selektion in Spalte A beginnt und Start der Zeilenselektion NICHT Zeile 0 ist, dann
	Elseif nStartCol = 0 And nStartRow > 0 then 
		'Inhalte vom oQuellbereich löschen
		oQuellbereich.clearcontents(5)
	Else
	' in jedem anderen Fall von Selektion den markierten Bereich, um eine Spalte nach links erweitern
'getCellRangeByPosition >>> ( [in] long nLeft, [in] long nTop, [in] long nRight, [in] long nBottom )
		' Startspalte = -1. Also wenn Startspalte(B) = 1, dann 0
		oRange=oSheet1.getCellRangeByPosition(nStartCol-1,nStartRow,nEndCol,nEndRow)
			'Inhalte in Range löschen
			oRange.clearcontents(5)
	End if
End Sub
Gruß

Craig
═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.6 • LO 6.2.1.2 (x64)

LunaSolar
Beiträge: 5
Registriert: Mo 27. Aug 2018, 09:04

Re: Ausgewählten Bereich auf benachbarte Zellen erweitern und Ihnalt löschen

Beitrag von LunaSolar » Di 15. Jan 2019, 21:37

Hallo Craig,

ganz herzlichen Dank für Deine Hilfe. Es funktioniert so wie ich es benötige. Super!

Viele Grüße
Luna

Antworten