Excel 2003: Problem mit Zellbezügen

  • #1
I

IrksEye

Guest
Hallo zusammen,

ich steh grad irgendwie auf dem Schlauch.
Und zwar habe ich eine Tabelle, in der nur bestimmte Spalten zur Bearbeitung freigegeben sind. Die anderen Spalten sind gesperrt, weil sie komplizierte Formeln enthalten, die nicht überschrieben werden dürfen. Diese Formeln beziehen ihre Variablen aber nur aus der jeweiligen Zeile der Tabelle. Der Blattschutz ist mit Kennwort belegt.

Nun habe ich nicht bedacht, dass jemand auf die Idee kommen könnte, in einer freigegebenen Spalte Zellen auszuschneiden und diese an anderer Stelle der selben Spalte wieder einzufügen. Excel versucht dann, die Zellbezüge anzupassen. Das will ich aber nicht. Daran ändert auch die Verwendung von absoluten Bezügen nichts.

Ich habe nun alle Zellbezüge durch zusammengesetzte Indirekt-Bezüge ersetzt. Z.B. für die Spalte A der selben Zeile: INDIREKT(A&ZEILE()). Das funktioniert, macht allerdings die Formeln für mich äußerst unübersichtlich. Habt ihr eine andere Lösung?
 
  • #2
Ola,

bist du vom Schlauch runter?
 
  • #3
Hallo PCDjoe,

der Schlauch ist mittlerweile platt. Nein, ich bin keinen Schritt weiter.
Ich habe versucht, eine VBA-Funktion zu schreiben, der man die Offsets der auszulesenden Zelle übergibt. Diese Funktion wollte ich dann vom Arbeitsblatt aus aufrufen. Z.B. =R(1,0) soll mir den Wert rechts von der Zelle, in der ich die Funktion benutze, zurückgeben.
Das Problem dabei ist, dass ich innerhalb der VBA-Funktion nicht feststellen kann, von welcher Zelle aus der Aufruf erfolgte um so die relative Adressierung hinzukriegen (ActiveCell.... funktioniert hier nicht, weil sich das auf den Cursor bezieht).
Ich könnte die aktive Zelle natürlich mit an die Funktion übergeben, das wird dann aber wieder so eine ZEILE()...SPALTE()-Mischung, die will ich ja gerade vermeiden, meine Formeln sind so schon lang genug. So dreht man sich im Kreis...

Ein anderer Ansatz wäre, das Ausschneiden irgendwie zu blockieren. Geht in die Richtung irgendwas?
 
  • #4
Hallo,

was ganz gut unter WorksheetSelectionChange geht:

Code:
Dim Zeile as Long, Spalte as Byte
Zeile = Target.Row
Spalte = Trage.Column

Allerdings könntest du alles Schützen und Einträge nur über eine UserForm
(Steuerung vielleicht ebenfalls über SelectionChange) steuern. Somit kannst
du im Code den Schutz deaktivieren, ändern und wieder schützen.

Oder aber du nimmst alle Formeln raus und berechnest die Zellen nur via VBA
(Vielleicht über einen CommandButton oder einen Menüpunkt in der Menü-
leiste). Spart ausserdem Unmengen Speicher. Stichwort Worksheetfunction -
hat mir schon große Dienste geleistet. Oder du berechnest mit den Zellbezügen.
 
Thema:

Excel 2003: Problem mit Zellbezügen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben