Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
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

zu umfangreicher Range "umgehen"

zu umfangreicher Range "umgehen"
Peter
Guten Tag
In meiner Tabelle "B" ermittle ich in der Zeile [bEinAus].Row, ob die entsprechende Spalte zwischendurch ausgeblendet werden muss. Wenn ja, steht in der jeweiligen Spalte eine 1.
Mit nachfolgendem Code kann ich die entsprechenden Spalten ein- resp. ausblenden. Die Tabelle ist in der Zwischenzeit umfangreich geworden, das heisst, es hat viele Spalten, die ein- resp. auszublenden sind. Dementsprechend erhalte ich nun an der Stelle " ThisWorkbook.Names.Add "bAusblenden", rngRefersTo " immer eine Fehlermeldung ("Index ausserhalb des gültigen Bereiches"). Ich vermute, dass der Range aus zu vielen Zellen besteht und deshalb dem Bereich "bAusblenden" nicht mehr zugewiesen werden kann.
Wie erreiche ich mit einem Workaround die gewünschte Lösung? Wer kann mir helfen?
Danke, Peter
Sub SwitcherunbenutzteSpalten()
ThisWorkbook.Activate
'Übergibt bestimmte Zelladressen in Zeile [bEinAus].Row dem benannten Bereich bEinAus,
'damit die ganzen Spalten aus- und eingeblendet werden können
Dim C As Range, rngRefersTo As Range
Dim Z As Long
Z = [bEinAus].Row
With Sheets("B")
For Each C In Range(Z & ":" & Z)
If C = 1 Then
If rngRefersTo Is Nothing Then
Set rngRefersTo = C
Else
Set rngRefersTo = Union(rngRefersTo, C)
End If
End If
Next C
ThisWorkbook.Names.Add "bAusblenden", rngRefersTo    'wahrscheinlich rngsRefersTo zu gross
End With
[bausblenden].EntireColumn.Hidden = Not [bausblenden].EntireColumn.Hidden
End Sub

AW: zu umfangreicher Range "umgehen"
01.08.2009 12:01:40
Original
Hi,
denke, dass das passiert, wenn das Blatt B nicht aktiv ist.
Du hast zwar einen With-Rahmen gestzt, benutzt ihn aber nicht.
mfg Kurt
AW: zu umfangreicher Range "umgehen"
01.08.2009 14:03:21
Peter
Hallo Kurt
Nein, ich starte den Makro, wenn ich im Blatt "B" bin. Das Problem ist, dass wohl nicht über 80 Zellen einem benannten Bereich zugefügt werden können. Früher, als noch weniger Zellen eine 1 hatten, klappte es problemlos.
Mich würde zudem interessieren, was mit "Du hast zwar einen With-Rahmen gestzt, benutzt ihn aber nicht." gemeint ist.
Danke und Gruss, Peter
AW: zu umfangreicher Range "umgehen"
01.08.2009 15:12:45
Original
Hi,
dein problem ist nicht nachvollziehbar.
With Sheets("B")
For Each C In Range(Z & ":" & Z)
If C = 1 Then
If rngRefersTo Is Nothing Then
Set rngRefersTo = C
Else
Set rngRefersTo = Union(rngRefersTo, C)
End If
End If
Next C
ThisWorkbook.Names.Add "bAusblenden", rngRefersTo 'wahrscheinlich rngsRefersTo zu gross
End With
Dieser With-Rahmen wird in dem Code nicht referenziert und ist daher sinnlos.
mfg Kurt
Anzeige
AW: zu umfangreicher Range "umgehen"
01.08.2009 17:27:59
Peter
Hi Kurt
abgesehen von der Schlaufe, die Nicht angesprochen wird - ich erhalte ja anderswo die Fehlermeldung. Wer kann weiterhelfen?
Gruss Peter
AW: zu umfangreicher Range "umgehen"
01.08.2009 17:59:29
Original
Hi,
habs jetzt mal mit dem länstmöglichen String (je zweite Spalte mit 1 markiert) getestet,
kein Problem, alos kein Fehler.
Die Meldung "Außerhalb des gültigen Bereichs" hat mit deinem Code auch nichts zu tun, es sei denn,
das Blatt B ist nicht aktiv.
mfg Kurt
RefersTo, With und Ein-/Ausblenden
01.08.2009 17:38:40
Erich
Hi Peter,
schau mal in der VBA-Hilfe das Beispiel zu Add (für Names) an.
Bei RefersTo wird NICHT ein Range, sondern eine Zeichenkette angegeben.
Vielleicht liegt da das Problem.
Aber das ist auch unnötig, du musst gar keinen Namen vergeben für das Ein-/Ausblenden.
Zu With schau dir mal in der VBA-Hilfe die Hilfe zur With-Anweisung an.
Das Wichtigste in dem Beispiel

With Bezeichnungsfeld1
.Height = 2000
.Width = 2000
.Caption = "Schönen Tag noch"
End With
sind die Punkte vor den Worten Height, Width und Caption.
So ein Punkt bedeutet: Ergänze vor dem Punkt das, was hi9nter With steht.
In deinem Code kam kein Ausdruck, der mit einem Punkt beginnt, vor. Deshalb war das With nutzlos.
Schau dir diese beiden Varianten mal an:

Option Explicit
Sub SwitcherunbenutzteSpalten()
'Übergibt bestimmte Zelladressen in Zeile [bEinAus].Row dem benannten Bereich bEinAus,
'damit die ganzen Spalten aus- und eingeblendet werden können
Dim rngC As Range, rngHide As Range
Dim Z As Long
ThisWorkbook.Activate
Z = [bEinAus].Row
With Sheets("B")
For Each rngC In .Rows(Z).Cells
If rngC = 1 Then
If rngHide Is Nothing Then
Set rngHide = rngC
Else
Set rngHide = Union(rngHide, rngC)
End If
End If
Next rngC
End With
If Not rngHide Is Nothing Then
ThisWorkbook.Names.Add "bAusblenden", "=" & rngHide.Address
MsgBox ThisWorkbook.Names("bAusblenden").RefersTo
[bausblenden].EntireColumn.Hidden = Not [bausblenden].EntireColumn.Hidden
End If
End Sub
' Das sollte auch ausreichen:
Sub SwitcherunbenutzteSpalten2()
Dim rngC As Range, rngHide As Range      ' zuerst: die Deklarationen
ThisWorkbook.Activate      ' Diese Zeile ist wohl unnötig.
' ("ich starte den Makro, wenn ich im Blatt "B" bin")
For Each rngC In [bEinAus].EntireRow.Cells
If rngC.Value = 1 Then
If rngHide Is Nothing Then
Set rngHide = rngC
Else
Set rngHide = Union(rngHide, rngC)
End If
End If
Next rngC
If Not rngHide Is Nothing Then _
rngHide.EntireColumn.Hidden = Not rngHide.EntireColumn.Hidden
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: RefersTo, With und Ein-/Ausblenden
01.08.2009 17:53:42
Gerd
Hallo Peter,
vielleicht reicht ja dies.
Sub d()
Dim Zelle As Range
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("B")
.Cells.EntireColumn.Hidden = False
For Each Zelle In .Range("1:1") 'Zeile "1:1" anpassen
Zelle.EntireColumn.Hidden = (Zelle.Value = 1)
Next
.Activate
End With
Application.ScreenUpdating = True
End Sub
Gruß Gerd
AW: RefersTo, With und Ein-/Ausblenden
01.08.2009 23:13:16
Peter
Hallo Gerd
Danke für dein Input. Der Switcher war mir sehr wichtig, deshalb habe ich nun die neue Variante von Erich G. verwendet.
Gruss, Peter
AW: RefersTo, With und Ein-/Ausblenden
01.08.2009 23:11:47
Peter
Hallo Erich
Vielen Dank für die ausführliche Erklärungen und den angepassten Code. Klappt wunderbar!
Gruss, Peter
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige