Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1108to1112
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

syntax mehrere lokale Bereiche ansprechen

syntax mehrere lokale Bereiche ansprechen
Jörg-HH
Hallo zusammen
ich möchte in einer großen Mappe mehrere Bereiche gleichzeitig ansprechen, die auf verschiedenen (aber nicht allen) Blättern mit jeweils dem gleichen Namen verewigt sind - also
wenn im Bereich xy der Wert z steht, soll dies passieren, sonst das - und das gilt für alle 20 Bereiche auf den 20 Blättern, auf denen er auftaucht.
mit For each rng in thisworkbook.worksheets....usw komm ich jedenfalls nicht weiter. Hab da wohl ne Bildungslücke...
Wie ist denn bitte die Syntax für dieses Vorhaben?
Schönen Dank schon mal...
Jörg
Doch so, aber .Range("bereichsname")! Gruß owT
19.10.2009 16:00:16
Luc:-?
:-?
geht noch nicht...
19.10.2009 16:12:37
Jörg-HH
Hi Luc
klappt noch nicht. Dies hab ich jetzt geschrieben (steht in dem Blatt, wo die ChBx ist)
Private Sub CheckBox18_Click()
Dim c As Range
For Each c In ThisWorkbook.Worksheets.Range("AlternBereich")
If c.Value = "alternativ" Then
If CheckBox18.Value = True Then
c.EntireColumn.Hidden = False
Else
c.EntireColumn.Hidden = True
End If
End If
Next c
End Sub

Da krieg ich die Meldung "Methode usw nicht gefunden". Abgesehen davon vermute ich, daß so alle 90 Blätter durchsucht werden, oder? Nur in 10 stehen diese Bereiche.
Gruß Jörg
Anzeige
Das ist falsch! Worksheets verlangt einen...
19.10.2009 16:52:17
Luc:-?
...Index, Jörg!
Und selbstverständlich wdn dann alle Blätter durchlaufen! Es muss ja festgestellt wdn, ob der Name auch für das Blatt zutrifft. Also im Zyklus nur die Blätter durchgehen...
Dim w As Worksheet, c As Range
On Error Resume Next
For Each w In ActiveWorkbook.Sheets
If IsError(w.Names("AlternBereich")) Then
Else: Set c = w.Range("AlternBereich")
End If
Next w
Alternativ könnte es auch If IsError(w.Range("AlternBereich")) Then heißen.
Gruß Luc :-?
noch etwas unklar...
19.10.2009 17:31:02
Jörg-HH
...wofür stehen die Punkte bei dir, Luc? Muß da mein Code rein?
nochmal was zu c
ich will da Spalten ausblenden, deswegen habe ich eine Zeile quer rüber Bereich "AlternBereich" genannt, und in bestimmten Zellen in diesem Bereich steht das Wort "alternativ", damit dann diese Spalten ausgeblendet werden (erschien mir am einfachsten, weil nämlich die auszublendenden Spalten icht alle nebeneinander liegen). Wenn ich dich richtig verstanden habe, setzt du c gleich den Bereich. Ich wollte aber erstmal den Bereich finden und dann die Zellen suchen, in denen "alternativ" steht.
Vielleicht hab ich auch einen falschen Ansatz - hab mal ein Beispiel gebaut: https://www.herber.de/bbs/user/65202.xls
magste mal reinschauen?
Jörg
Anzeige
Viell später! Jetzt muss ich erst mal die...
19.10.2009 17:40:07
Luc:-?
...Pflanzenpötte vor dem Nachtfrost retten, Jörg!
Ansonsten stehen die Pktt wirklich für den Teil deines Codes, der hier passt. Deshalb habe ich auch c gesetzt, was sonst nicht unbedingt erforderlich gewesen wäre.
Gruß Luc :-?
Übrigens habe ich so etwas auch mal gemacht,...
19.10.2009 17:46:47
Luc:-?
...Jörg;
allerdings über Zellfarben...
Ganze Zeile bspw grün gefärbt → Makro drüber laufen lassen, das grüne Zeilen ausblendet → fertig. Keine Fehler, keine Probleme, wenn mal keine Zeile grün ist.
Gruß Luc :-?
immer noch Fehler
19.10.2009 22:48:10
Jörg-HH
hmm...
hab jetzt mal deinen und meinen Code ineinander gestöpselt - läuft aber nicht. Hab das in die Beispieldatei eingebaut https://www.herber.de/bbs/user/65213.xls
kriege "Typen unverträglich" gemeldet bei For each c...
Falls Luc heut nicht mehr im Forum aufkreuzt - hat sonst jemand vielleicht ne Idee?
Schönen Abend noch - Jörg
Anzeige
Lösung gefunden :-))))) oT
19.10.2009 23:17:28
Jörg-HH
In den 3 Differenzminuten habe ich gerade...
19.10.2009 23:27:40
Luc:-?
...meine Korrektur eingestellt, Jörg... ;-)
Nehme an, du hast ungefähr das Gleiche!
Gute Nacht, Luc :-?
Aber so funktioniert's,...
19.10.2009 23:20:38
Luc:-?
...Jörg...! ;-)
Private Sub CheckBox1_Click()
Dim w As Worksheet, c As Range
On Error Resume Next
For Each w In ActiveWorkbook.Sheets
If IsError(w.Range("AlternBereich")) Then
'tu nix
Else
For Each c In w.Range("AlternBereich")
If c.Value = "alternativ" Then
If CheckBox1.Value = True Then
c.EntireColumn.Hidden = False
Else: c.EntireColumn.Hidden = True
End If
End If
Next c
End If
Next w
End Sub
...obwohl mir das recht umständlich vorkommt...
Gruß Luc :-?
PS: Wenn du On Error... auskommentierst, bekommst du wahrscheinlich 'ne Fehlermeldung, wenn der benannte Bereich nicht auf dem Blatt existiert. Teste das mal!
Anzeige
stimmt, ohne on error geht's nicht...
20.10.2009 00:09:02
Jörg-HH
...läuft zwar in diesem Beispiel, aber in meiner Originaldatei sind Blätter ohne diesen Bereich, und da stoppt das dann.
Mein Code ist fast identisch. Ich habe nur hinter dem ersten Else ein w.Activate eingefügt, weil sonst immer nur das erste Blatt bearbeitet wurde.
Dir auch eine ruhige Nacht...
Jörg
Na, dann isset ja jut... ;-) Gruß owT
20.10.2009 12:22:40
Luc:-?
:-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige