Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
312to316
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
312to316
312to316
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Select Case begrenzen

Select Case begrenzen
22.09.2003 17:35:14
Elmar Steigenberger
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case begrenzen
22.09.2003 17:54:56
ChrisL
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
AW: Select Case begrenzen
22.09.2003 18:04:44
Elmar Steigenberger
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
Anzeige
AW: Select Case begrenzen
22.09.2003 20:29:06
ChrisL
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
AW: Select Case begrenzen
22.09.2003 21:47:15
Elmar Steigenberger
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
Anzeige
AW: Select Case begrenzen
23.09.2003 09:12:37
Reinhard
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige