BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗
Alles zur Programmierung im OpenOffice.org
-
LunaSolar
- Beiträge: 5
- Registriert: Mo 27. Aug 2018, 09:04
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: 318
- Registriert: Sa 14. Mai 2016, 12:36
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
Nie die Sicherungskopie vergessen!
═══════════════════════════════════════
WIN 10 Pro 64-Bit • AOO 4.1.8 • LO 7.4.5.1 (x64)
-
LunaSolar
- Beiträge: 5
- Registriert: Mo 27. Aug 2018, 09:04
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