Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
364to368
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
364to368
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sheet bedingt aktivieren

Sheet bedingt aktivieren
19.01.2004 11:11:53
Madeleine
Morgen zusammen,
ich hab folgendes Problem:
Mit einem click auf einen Button, werden in einem sheet bestimmte Zeilen ausgeblendet. Das sind Daten, die nicht Bestandteil eines Diagramms sein sollen. Das funktioniert auch alles soweit. Jetzt gibt es aber in diesem Datenbestand Prozentzahlen, Monetäre Zahlen und noch andere, so dass diese jeweils in einem anderen Diagramm ausgespuckt werden sollen. Auch das ist kein Problem. Es wäre nur schön, wenn nach dem Ausblenden der nicht benötigten Daten, automatisch das sheet aktiviert wird, in welchen gerade das Diagramm erstellt wurde. Dafür hab ich jedem Datensatz eine Nummer in Spalte B gegeben (0, 1, 2), je nachdem, welches das Zieldiagramm ist. Es ist auch so angelegt, dass nur eine dieser Zahlen in Spalte B nach dem Ausblenden vorkommen kann. Nur leider funktioniert das Wechseln auf das jeweilige sheet nicht. Der Code lautet wie folgt:


Private Sub CommandButton1_Click()
Dim i As Long
Dim Column As Range
For i = 1 To ActiveSheet.UsedRange.Rows.Count
Range("A" & i).Select
If ActiveCell.Value = "" Then
ActiveCell.EntireRow.Hidden = True
Else
End If
Next i
'bis hierher funktioniert alles ohne Probleme
Range("B:B").Select
For Each cell In Selection
If cell.Value = 0 Then
Sheets("Graph").Activate
End If
If cell.Value = 1 Then
Sheets("Graph2").Activate
End If
If cell.Value = 2 Then
Sheets("Graph3").Activate
End If
Next
End Sub


Das Diagramm wird zwar erstellt, aber das Flackern des Bildschirms hört nicht auf. Ich weiß, dass man dafür Application.ScreenUpdating = True/False setzen kann, aber dann funktioniert gar nix mehr.
Aber vielleicht liegt der Fehler auch einfach am Wochentag. Ist jemand munterer als ich an diesem verschneiten Montagmorgen? Danke schon jetzt für jede Hilfe!!!
Madeleine

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet bedingt aktivieren
19.01.2004 12:43:05
xXx
Hallo Madeleine,
da sind ein paar grundsätzliche Fehler drin.
1. Dim Column as Range
Column ist ein Schlüsselwort und sollte nicht als Varialble benutzt werden!-->Dim rngCol as Range
2. Select und Activate sind in 99% aller Fälle überflüssig und verlangsamen nur den Code.
For i=1 to activesheet.usedrange.rows.count
if Range("A" &i)="" then
Rows(i).entirerow.hidden=true
next i
3.Range("B:B").select; For each Cell in....
Damit durchläufst du die komplette Spalte B! Auch die ausgeblendeten Zeilen=65536 Zellen.
Und jedesmal wird das Blatt aktiviert. Du solltest die Bedingung setzen, dass die Zeile sichtbar ist und bei einem Treffer die Schleife verlassen.
For each Cell in Range("B:B")
If Cell.Row.Hidden=False Then
select case cell
case 0
Sheets("Graph").select
exit for
case 1
sheets("Graph2").select
exit for
case 2
sheets("Graph3").select
exit for
end select
end if
next cell
Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen an die Antworter!
Anzeige
AW: Sheet bedingt aktivieren
19.01.2004 14:50:19
Madeleine
Hallo Udo,
danke für Deine ausführlichen Erklärungen!!!!! Bin leider (noch) kein VBA-Experte...aber mit Hilfe dieses astreinen Forums kann sich das vielleicht noch ändern. Das Ausblenden der Zeilen läuft wirklich viel schneller. Allerdings bekomme ich noch eine Fehlermeldung:
...
For Each Cell In Range("B:B")
If Cell.Row.Hidden = False Then --> hier ist noch ein Objekt erforderlich
Select Case Cell
Case 0
Sheets("Graph").Select
Exit For
...
Was muss denn da noch rein?
Grüße aus dem Winterschlaf!
Madeleine
AW: Sheet bedingt aktivieren
19.01.2004 16:08:29
xXx
Hallo,
meine Schuld!
For Each Cell in Range("B:B").Cells
oder besser
For each Cell in Columns(2).Cells
Gruß aus'm Pott
Udo
http://www.excelerator.de
Anzeige
AW: Sheet bedingt aktivieren
19.01.2004 16:33:43
madeleine
tach nochmal,
bei mir stehen gerade zuviele Bäume vorm Wald. Irgendwas hängt da noch...
For Each Cell In Columns(2).Cells
If Cell.Row.Hidden = False Then --> Fehlermeldung kommt hier immer noch
Select Case Cell
Case 0
Sheets("Graph").Select
Exit For
Case 1
Sheets("Graph2").Select
Exit For
Case 2
Sheets("Graph3").Select
Exit For
End Select
End If
Next Cell

Grüße von hier nach da,
Madeleine
AW: Sheet bedingt aktivieren
19.01.2004 18:24:04
xXx
Hallo Madeleine,
ein anderer Ansatz (ansonsten bis morgen, ich geh jetzt squashen):
if cell.Rowheight>0 then
Bei mir ging's
Gruß aus'm Pott
Udo
http://www.excelerator.de
P.S.Das Forum lebt auch von den Rückmeldungen an die Antworter.
Anzeige
AW: Sheet bedingt aktivieren
19.01.2004 19:43:44
madeleine
Hallo Udo,
danke für die viele Mühe. 'Ne Fehlermeldung kommt jetzt nicht mehr. Es wird allerdings jedes Mal nur "Graph" (also das erste von den drei möglichen Sheets aktiviert). Hhmm......Squash spielen geh ich jetzt zwar nicht, aber trotzdem reichts für heute.
Hier nochmal der komplette Code......

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Range("A" & i) = "" Then
Rows(i).EntireRow.Hidden = True
Else
End If
Next i
For Each Cell In Columns(2).Cells
If Cell.RowHeight > 0 Then
Select Case Cell
Case 0
Sheets("Graph").Select
Exit For
Case 1
Sheets("Graph2").Select
Exit For
Case 2
Sheets("Graph3").Select
Exit For
End Select
End If
Next Cell
Application.ScreenUpdating = True
End Sub

Grüße aus der Dunkelheit,
Madeleine
Anzeige
AW: Sheet bedingt aktivieren
20.01.2004 12:58:49
xXx
Hallo,
das reagiert natürlich nur auf den ersten Wert, der in Spalte B vorkommt. Dann wird die Prozedur verlassen.
Ich kenn' ja die genauen Umstände nicht. Kannst du mich aus deiner Dunkelheit heraus ein wenig erhellen?
Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen an die Antworter!
AW: Sheet bedingt aktivieren
20.01.2004 13:32:23
madeleine
Hallo Udo,
das ist natürlich etwas anderes. Mit dem momentanen Code wird also gleich die erste Zelle in Spalte B angesprochen, und nicht die erste Zelle, in der ein Wert steht. Darauf hätte ich eigentlich selbst kommen müssen. Die Auswahl zwischen 0,1 oder 2 beginnt frühestens in Zeile 4. In den ersten drei Zeilen in Spalte B steht zwar nichts, aber das wird wohl automatisch als 0 erkannt. Ich hab die "cases" mal zu 1,2 und 3 geändert. Und: Überraschung!!!! Es FUNZT!!!
Danke schööööööön für Deine Zeit und Hilfe!!!
Grüße vom Ende des Tunnels,
Madeleine
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige