Das Archiv des Excel-Forums

Select Case begrenzen

Bild

Betrifft: Select Case begrenzen
von: Elmar Steigenberger

Geschrieben am: 22.09.2003 17:35:14

Hallo Ihr lieben Helfer und Helferinnen,

Kann ich irgendwie bestimmt Select Case Anweisungen begrenzen?

Folgendes Makro:

aktuelleZelle = ActiveCell.Row

Select Case aktuelleZelle

Case Is < 10: Wohnung = 0
Case 10 To 14: Wohnung = 1
Case 15 To 19: Wohnung = 2
Case 20 To 24: Wohnung = 3
Case 25 To 29: Wohnung = 4
Case 30 To 34: Wohnung = 5
Case 35 To 39: Wohnung = 6
Case 40 To 44: Wohnung = 7
Case 45 To 49: Wohnung = 8
Case 50 To 54: Wohnung = 9
Case 55 To 59: Wohnung = 10
Case 60 To 64: Wohnung = 11
Case 65 To 69: Wohnung = 12
Case 70 To 14: Wohnung = 13
Case 75 To 79: Wohnung = 14
Case 80 To 84: Wohnung = 15
Case 85 To 89: Wohnung = 16
Case 90 To 94: Wohnung = 17
Case 95 To 99: Wohnung = 18
Case 100 To 104: Wohnung = 19
Case 105 To 109: Wohnung = 20

Case Else: MsgBox "Bitte klicken Sie auf eine beliebige in die Zelle exakt in der Zeile, in der Sie z.B. einen Mieterwechsel durchführen wollen!": Wohnung = 99

End Select

If Wohnung = 99 Then GoTo Ende

Schutz = Worksheets("wD").Range("m1")

Application.ScreenUpdating = False

ActiveSheet.Unprotect
Selection.AutoFilter Field:=5
If Wohnung <> 0 Then Selection.AutoFilter Field:=1, Criteria1:=CStr(Wohnung)
If Schutz = 1 Then ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Ende:

=================

Hintergrund:

Ein Blatt mit einer Tabelle mit Wohnungen. Der Makro soll bei Aufruf nur eine bestimmte Wohnung anzeigen. Prinzipiell ist immer gefiltert nach Spalte 5, wenn der Makro läuft, dann wird auch noch gefiltert nach Spalte 1.

Die entsprechende Wohnung wird über das Anklicke der Zelle bestimmt.

Wenn jemand zwischen 10 und 14 klickt ist es Wohnung 1, zw 15 und 19 Wo 2, ...

Wenn jemand oberhalb des Bereichs klickt wird der Autofilter nicht geändert
Wenn jemand unterhalb des Bereichs klickt (> 109) dann wird der Makro nicht aufgerufen, sondern die MsgBox eingeblendet.

Manchmal geht aber mein Bereich nicht bis 109, sondern hört vorher auf, zb bei 69, wenn es 12 Wohnungen sind und bei 84, wenn es 15 Wohnungen sind.

Wenn jetzt in solchen Dateien jemand z.B. in die Zeile 100 klickt, wird nach den Wohnungen gefiltert, die es gar nicht gibt

Die Variable, die die Anzahl der Wohnungen definiert, heißt AW (AnzahlWohnungen) Die Anzahl der Zeilen berechnet sich aus AW*5.

kann man irgendwie das in die Select-Anweisung einbauen, dass er früher aufhören muß, wenn AW*5 kleiner ist als der Bereich im Case abgefragte Bereich?

Vielen Dank fürs Lesen, Eindenken und Antworten!

liebe Grüße
Elmar



liebe e-Grüße
Elmar
Bild


Betrifft: AW: Select Case begrenzen
von: ChrisL
Geschrieben am: 22.09.2003 17:54:56

Hi Elmar

Wenn z.B. nur 69 Zeilen vorhanden sind (12 Wohnungen) dann gehe ich davon aus, dass Zeile 69 in der entsprechenden Spalte die letzte beschriebene Zeile ist. Dann geht es so...

If aktuelleZelle > Range("A65536").End(xlUp).Row Then Exit Sub

Anschliessend dein Code.

Anstatt Goto Ende wäre ürigens Then Exit Sub schöner.

Gruss
Chris


Bild


Betrifft: AW: Select Case begrenzen
von: Elmar Steigenberger
Geschrieben am: 22.09.2003 18:04:44

Hallo ChrisL,

ist leider nicht so. Da stehen manchmal unten noch verschiedenste Zeilen dran, manchmal nur eine, manchmal mehrere.

Vielleicht muß ich dann doch wieder auf die unübersichtliche IF THEN ELSE Zurück, bei der ich mehrere Bedingungen abfragen kann mit AND

Sowas wie aktuelleZelle > 60 and AktuelleZelle < 65 And AW*5 < AktuelleZelle

Da wärs dann doch wieder ein Unterschied zwischen IF THEN ELSE und Select Case.

Hab ich ja heut schon mal gefragt und das ist jetzt die Antwort drauf.

Wie siehst Du das?

liebe e-Grüße
Elmar


Bild


Betrifft: AW: Select Case begrenzen
von: ChrisL
Geschrieben am: 22.09.2003 20:29:06

Hi Elmar

Fällt mir im Moment auch nichts schlaues ein, wie sowas in die Case Abfrage zu integrieren wäre, allerdings kannst du die If...Then Bedingung einfach an den Anfang setzen und dann Case trotzdem belassen.

Gruss
Chris


Bild


Betrifft: AW: Select Case begrenzen
von: Elmar Steigenberger
Geschrieben am: 22.09.2003 21:47:15

Hallo Chris,

habs jetzt so gemacht:

AW = Worksheets("GD").Range("C10") 'AnzahlWohnungen

aZ = ActiveCell.Row

If aZ < 10 Then: Wohnung = 0
ElseIf aZ >= 10 And aZ <= 14 And aZ < AW * 5 Then: Wohnung = 1
ElseIf aZ >= 15 And aZ <= 19 And aZ < AW * 5 Then: Wohnung = 2
ElseIf aZ >= 20 And aZ <= 24 And aZ < AW * 5 Then: Wohnung = 3
ElseIf aZ >= 25 And aZ <= 29 And aZ < AW * 5 Then: Wohnung = 4
ElseIf aZ >= 30 And aZ <= 34 And aZ < AW * 5 Then: Wohnung = 5
ElseIf aZ >= 35 And aZ <= 39 And aZ < AW * 5 Then: Wohnung = 6
ElseIf aZ >= 40 And aZ <= 44 And aZ < AW * 5 Then: Wohnung = 7
ElseIf aZ >= 45 And aZ <= 49 And aZ < AW * 5 Then: Wohnung = 8
ElseIf aZ >= 50 And aZ <= 54 And aZ < AW * 5 Then: Wohnung = 9
ElseIf aZ >= 55 And aZ <= 59 And aZ < AW * 5 Then: Wohnung = 10
ElseIf aZ >= 60 And aZ <= 64 And aZ < AW * 5 Then: Wohnung = 11
ElseIf aZ >= 65 And aZ <= 69 And aZ < AW * 5 Then: Wohnung = 12
ElseIf aZ >= 70 And aZ <= 74 And aZ < AW * 5 Then: Wohnung = 13
ElseIf aZ >= 75 And aZ <= 79 And aZ < AW * 5 Then: Wohnung = 14
ElseIf aZ >= 80 And aZ <= 84 And aZ < AW * 5 Then: Wohnung = 15
ElseIf aZ >= 85 And aZ <= 89 And aZ < AW * 5 Then: Wohnung = 16
ElseIf aZ >= 90 And aZ <= 94 And aZ < AW * 5 Then: Wohnung = 17
ElseIf aZ >= 95 And aZ <= 99 And aZ < AW * 5 Then: Wohnung = 18
ElseIf aZ >= 100 And aZ <= 104 And aZ < AW * 5 Then: Wohnung = 19
ElseIf aZ >= 105 And aZ <= 109 And aZ < AW * 5 Then: Wohnung = 20
Else: MsgBox "Bitte klicken Sie auf eine beliebige in die Zelle exakt in der Zeile, in der Sie z.B. einen Mieterwechsel durchführen wollen!": Exit Sub
End If

Schutz = Worksheets("wD").Range("m1")
Application.ScreenUpdating = False

ActiveSheet.Unprotect
Selection.AutoFilter Field:=5
If Wohnung <> 0 Then Selection.AutoFilter Field:=1, Criteria1:=CStr(Wohnung)
If Schutz = 1 Then ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

So klappts!

Vielen Dank für Deine Hilfe!

liebe e-Grüße
Elmar


Bild


Betrifft: AW: Select Case begrenzen
von: Reinhard
Geschrieben am: 23.09.2003 09:12:37

Hi Elmar,
probier mal das, habs nicht getestet.

if az < aw*5 then
wohnung=int(az/5) - 1
if wohnung=-1 then wohnung=0
else
msgbox "Bitte klicken ...."
end if

Gruß
Reinhard


 Bild

Excel-Beispiele zum Thema " Select Case begrenzen"

Focus und Selection zwischen zwei TextBoxes wechseln download Beispiele zum Einsatz des SelectionChange-Ereignisses download
Eingabelänge in TextBox begrenzen und Werte aus Liste übernehmen download Scrollbereich begrenzen download
Eingabemöglichkeit auf 255 Zeichen je Zelle begrenzen download Eingabe in Tabellenblatt-TextBox begrenzen download
Textlänge in einer Spalte auf 40 Zeichen begrenzen download