Zellbezüge sollen beim Kopieren erhalten bleiben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zellbezüge sollen beim Kopieren erhalten bleiben

Re: Zellbezüge sollen beim Kopieren erhalten bleiben

von LeverAction » Mo, 15.03.2010 21:16

Hi DPunch,

vielen Dank für die schnelle Hilfe.
Werde mich in den nächsten Tagen mit deinem Code näher beschäftigen, sobald ich ein wenig Ruhe dafür finde.
Hab' es nur 'mal schnell "eingebaut" und es hat sofort funktioniert. Einfach großartig, Danke noch einmal.

Gruß,
Matthias

Re: Zellbezüge sollen beim Kopieren erhalten bleiben

von DPunch » Mo, 15.03.2010 20:19

Aloha

Wie bzw. ob man das Anpassen der Zellbezüge beim Kopieren per Makro generell verhindern kann, weiss ich leider nicht.

Aber bis sich jemand mit ausreichender Kompetenz meldet, sollte folgendes auch seinen Zweck erfüllen:

Code: Alles auswählen

Sub Kopieren
   sDesiredCellRange = "A1:T70"
	oDoc = thisComponent
	oSheetToCopy = oDoc.CurrentController.ActiveSheet
	sSheetName = oSheetToCopy.Name
	oRangeToCopy = oSheetToCopy.getCellRangeByName(sDesiredCellRange)
	aFormulaArray = oRangeToCopy.getFormulaArray
	
	sNewName = sSheetName & "_2"
	If oDoc.Sheets.hasByName(sNewName) Then
		MsgBox "Tabellenblatt " & sNewName & " schon vorhanden", 16, "Fehler"
		Exit Sub
	End If
	nNewIndex = oDoc.Sheets.Count
	oDoc.Sheets.copyByName(sSheetName,sNewName,nNewIndex)
	oNewSheet = oDoc.Sheets(nNewIndex)
	oTargetRange = oNewSheet.getCellRangeByName(sDesiredCellRange)
	oTargetRange.setFormulaArray(aFormulaArray)
End Sub

Zellbezüge sollen beim Kopieren erhalten bleiben

von LeverAction » So, 14.03.2010 17:16

Hallo OOo-Freunde,

ich versuche im Moment folgendes Problem zu bewältigen:
Das aktive Tabellenblatt soll dupliziert werden, was ja über copyByName auch nicht so schwierig ist.
Allerdings werden die relativen Zellbezüge, welche auf andere Blätter verweisen, angepasst, was ich gerne verhindern möchte.
In einem älteren Referenzhandbuch fand ich den Hinweis auf ToggleRelative, womit sich nach einmaligem Ausführen die Zellbezüge in absolute ändern. Das erreiche ich händisch auch mit "Umschalt + F4", dann bleiben logischerweise auch die Zellbezüge so erhalten, das ich auf der duplizierten Seite den gleichen Inhalt dargestellt bekomme.
Alternativ hatte ich versucht, es durch aktivieren des Tabellenblattschutzes umzusetzen, aber die Zellbezüge wurden trotzdem geändert.

Code: Alles auswählen

Dim oCalcDokument as Object
Dim oSheets as Object
Dim oSheet as Object
Dim oSelektion as Object
Dim iIndex as Long
Dim sName as String
Dim sCopy as String

Sub Kopieren
oCalcDokument = ThisComponent
oSheets = oCalcDokument.getSheets()
iIndex = oSheets.getCount()
sName = oCalcDokument.CurrentController.ActiveSheet.Name
oSheet = oSheets.getByName(sName)
oSelektion = oSheet.getCellRangeByName("A1:O70")
oSelektion.ToggleRelative
sCopy = sName & "_2"
oSheets.copyByName(sName, sCopy, iIndex)
End Sub
Kann mir jemand bei der Umsetzung behilflich sein?
Auch andere Lösungsansätze sind willkommen.

Gruß,
Matthias

Nach oben