Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Absturz bei lokalen Bereichsnamen

Absturz bei lokalen Bereichsnamen
28.07.2008 08:58:37
Werner
mein Excel-Niveau: befriedigend
Hallo liebe Forumsmitglieder,
Die Spalten eines Tabellenblatts hatte ich als Bereiche definiert (jeweils eine Spalte als einen Bereich).
Anschliessend ist mir die Tabelle durch einen falschprogrammierten Makro kaputtgegangen, und ich habe
sie von einer in der gleichen Datei enthaltenen Sicherheitskopie durch Kopieren der Sicherheitskopie
wiederhergestellt. Als Ergebnis sind aber alle globalen Bereichsnamen in der kopierten Tabelle zu lokalen
Bereichsnamen geworden.
Nun habe ich festgestellt, dass lokale Bereichsnamen schwerer als globale anzusprechen sind, besonders
wenn man z.B. zwei oder mehrere verschiedene Tabellen hat, die alle mit den gleichen lokalen Bereichsnamen
arbeiten (in meiner Datei haben drei Tabellen die gleiche Struktur und die gleichen Bereichsnamen, bei zweien davon hatte ich von vorneherein lokale Bereichsnamen gewählt).
Excel erkennt einen lokalen Bereichsnamen manchmal auch dann nicht, wenn ich ihn mit Voranstellung
des Worksheetnamens anspreche, z.B.
Worksheets(1).Cells(2, Range("Spaltenname").column).Value = "xx"
Wenn ich dann aber das Worksheet in einer obiger Programmzeile direkt vorangestellten Programm-
zeile aktiviere, klappt es meistens:
Worksheets(1).Activate
Worksheets(1).Cells(2, Range("Spaltenname").column).Value = "xx"
Das soll einer mal verstehen! Liegt hier eine Schwachstelle von Excel vor oder habe ich einen Fehler
gemacht? (Ein Umbenennen der Bereichsnamen in den verschiedenen gleichstukturierten Tabellen
wäre etwas umständlich.)
Kurzum, mein Problem ist nicht unlösbar, doch ich finde das dauernde Aktivieren der Worksheets doch
ziemlich umständlich. Werner R.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Absturz bei lokalen Bereichsnamen
28.07.2008 09:24:00
Luschi
Hallo Werner,
lokale Variablen müssen richtig angesprochen werden, wenn eine andere
Tabelle aktiv ist:

With ThisWorkbook.Worksheets("Tabelle1")
.Cells(1, .Range("Spaltenname").Column).Value = "blablabla"
End With

Wichtig ist hierbei der Punkt vor Range, damit Excel den lokalen Namen in 'Tabelle1' sucht.
Sonst bezieht sich Range (wie auch Cells) immer nur auf die aktive Tabelle.
Gruß von Luschi
aus klein-Paris

Alles klar
28.07.2008 09:38:00
Werner
Hallo Luschi,
Jetzt dämmert es mir: Die Worksheets-Anweisung muss bei lokalen Bereichsnamen also nicht nur auf "Cells", sondern separat noch einmal auf den (lokalen) "Range" bezogen sein (durch die "Do With...End With-Anweisung" erspart man sich die explizite Wiederholung).
Also kann ich mir das dauernde Wiederaktivieren des Worksheets doch ersparen.
Vielen herzlichen Dank, denn ich setze diese Art von Anweisung ziemlich häufig ein!!
Werner R.

Anzeige
Test verlief erfolgreich
29.07.2008 12:54:37
Werner
Hallo Luschi,
das Verfahren mit Do With..End With und dem zusätzlichen Punkt, das ich inzwischen ausprobiert habe,
funktioniert prima, und ich kann es oft einsetzen Nochmals vielen herzlichen Dank! Werner R.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige