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

Code komprimieren

Code komprimieren
28.10.2014 11:52:32
Manuel
Hallo zusammen,
bei mir geht es um die Komprimierung eines Codes.
Die Funktion ist wie folgt:
In Zelle A1 können die Zahlen 1-10 eingegeben werden, je nach Zahl werden Zeilen ausgeblendet bzw. eingeblendet.
z.B. Wenn A1 = 5 dann sollen Zeile 10 bis 14 eingeblendet werden.
Da dieses auf bis zu 100 Zeilen ausgebaut werden soll, liegt mein Interesse darin den folgenden Code zu komprimieren. Ich habe leider keine Idee da mein Repertoire größten Teils auf If-Funktionen beschränkt ist.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Range(Target.Address) = 1 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 1 Then Rows(10).Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 2 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 2 Then Rows("10:11").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 3 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 3 Then Rows("10:12").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 4 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 4 Then Rows("10:13").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 5 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 5 Then Rows("10:14").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 6 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 6 Then Rows("10:15").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 7 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 7 Then Rows("10:16").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 8 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 8 Then Rows("10:17").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 9 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 9 Then Rows("10:18").Hidden = False
End If
If Target.Address = "$A$1" Then
If Range(Target.Address) = 10 Then Rows("10:19").Hidden = True
If Range(Target.Address) = 10 Then Rows("10:19").Hidden = False
End If
End Sub
Vielen Dank für eure Hilfe
Gruß Manuel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code komprimieren
28.10.2014 12:05:40
yummi
Hallo Manuel,
probier mal folgendes:

Private Sub Worksheet_Change(ByVal Target As Range)
dim strRange as string
If Target.Address = "$A$1" Then
Rows("10:19").Hidden = true
strRange = "10:" & 9 + Range(Target.Address)
Rows(strRange).Hidden = False
End If
nicht getestet, müsste aber das selbe machen.
Gruß
yummi

AW: Code komprimieren
28.10.2014 12:10:30
Daniel
Hi
zumindest mal das erste IF, dh die Abfrage ob die Zelle A1 geändert wurde , brauchst du nur einmal.
das erste ausblenden aller Zellen ist auch immer gleich, dass kannst du dann auch vor den einzelnen Abfragen ausführen.
desweitern ist "Range(Target.Address)" das gleiche wie "Target", was du ebenfalls nutzen kannst um deinen Code zu kürzen.
Für die Abfrage von einzelnen Werten bietest sich das Select Case als Alternative zu IF-THEN an:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Rows("10:19").Hidden = True
Select Case Target.Value
Case 1: Rows(10).Hidden = false
Case 2: Rows("10:11").Hidden = False
Case 3: Rows("10:12").Hidden = False
Case 4: Rows("10:13").Hidden = False
Case 5: Rows("10:14").Hidden = False
Case 6: Rows("10:15").Hidden = False
Case 7: Rows("10:16").Hidden = False
Case 8: Rows("10:17").Hidden = False
Case 9: Rows("10:18").Hidden = False
Case 10: Rows("10:19").Hidden = False
Case Else
End Select
End If
End Sub
ob weitere Verkürzungen möglich sind, hängt von deiner Logik ab, was bei welcher Zahl ausgeblendet werden soll.
in Deinem Fall der wert in der Zelle die Anzahl der eingeblendeten Zeilen, deswegen kann man das ganze so verkürzen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Rows("10:19").Hidden = True
Select Case Target.Value
Case 1 to 10
Rows(10).Resize(Target.Value).Hidden = false
Case Else
End Select
End If
End Sub
Gruß Daniel

Anzeige
AW: Code komprimieren
28.10.2014 13:25:21
Manuel
Hi yummi, hi Daniel,
vielen Dank für die schnellen Antworten funktioniert beides echt super.
@Daniel: Nochmal danke für die ausführliche und schrittweise Erläuterung deiner Denkweise.
Gruß Manuel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige