Seite 1 von 1

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

Verfasst: Mo 7. Jan 2019, 20:59
von LunaSolar
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

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

Verfasst: Di 8. Jan 2019, 17:16
von craig
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

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

Verfasst: Di 15. Jan 2019, 21:37
von LunaSolar
Hallo Craig,

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

Viele Grüße
Luna