Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ranges in VBA per Name ansprechen

148 views
Skip to first unread message

Volker Neurath

unread,
Nov 29, 2017, 2:34:36 PM11/29/17
to
Hi zusammen,

ich habe in Excel ein kleines Formular gebaut, in das unsere
Außendienstler die wichtigsten Daten zu einer Angebots-Anfrage eintragen
sollen.
Damit einige zwingend notwendige Daten auch eingetragen werden, lässt
sich das Formular/Excel nicht schliessen, wenn in bestimmte Felder
nichts eingetragen wurde.

Mein Problem:
bislang komme ich nicht drumherum, diese Felder über ihre Zelladresse
anzusprechen, beispielsweise, wenn ich beim Laden des Formulares den
Zellschutz für alle eingabefelder aufhebe; es funktioniert derzeit nur
mit z.B.

Range("B2").Locked=False

ein

Range("Owner").Locked=False

führt zur Laufzeit zu der lapidaren Ansage, dass die Eigenschaft
"Locked" nicht gesetzt werden kann.

Warum?

Dasselbe Problem habe ich, wenn ich folgendes machen möchte:

Dim AWB as Workbook
Dim n as Names

Set AWB=ThisWorkbook

For Each n in AWB.Names
Range(n.Name).Locked=False
Next n

Auch auslesen (Werte) lassen sich die benannten B ereiche auf diese
Weise nicht.

Da das Formular "lebt" wäre es gut, wenn das so oder ähnlich ginge -
bisher sind die Bereiche im VBA-Code "hart codiert" was zur Folge hat,
dass ich bei Anpassungen am Layout (zufügen/entfernen von
Zeilen/Spalten) den Code gleich an zwei Stellen anpassen muss :(

Irgendjemand hier, der mir das Brett vor dem kopf zerhackt?

Danke vorab

Volker

Volker Neurath

unread,
Nov 30, 2017, 5:25:03 AM11/30/17
to
Mittlerweile läuft auch ein

> Range("B2").Locked=False

*immer* auf einen Fehler.

ich bin mit meinem Latein am Ende

Volker Neurath

unread,
Nov 30, 2017, 5:54:55 AM11/30/17
to
Aaaargh!

Der Grund war:
Einige Felder bestehen aus verbundenen Zellen.
Bei diesen muss der gesamte Beteich angegeben werden. Hat man
beispielsweise die Felder B2 bis D2 verbunden, muss der Befehl
lauten:
Range("B2:D2").Locked=False
die Angabe "B2" reicht nicht. Und das ist auch der Grund, warum
ein Named Range hier fehlschlägt: für das obige Beispiel gibt der
namensmanager "$B$2" zurück...
0 new messages