VBA - Schleife um Zeilen einzublenden und auszublenden
#1
Guten Morgen zusammen,

ich möchte in einem Excel-Blatt Zeilen schrittweise ein- bzw. ausblenden. Dies habe ich bisher mit dem Worksheet. SelectionChange-Ereignis umgetzt. Allerdings ist die "Pflege" des Codes und die Erweiterung auf weitere Zeilen oder Blätter sehr zeitraubend. Da meine Kenntnisse in VBA sich im Anfänger-Stadium bewegen, würde ich mich freuen wenn ich hier eine Lösung oder Lösungsansatz bekommen würde wie man diesen Code mit einer VBA-Schleife kürzer und eleganter und pflegeleichter macht.
Ich wünsche vorab Allen ein schönes Wochenende.
G****

Nachtrag: zum besseren Verständnis, ergänze ich diesen Beitrag mit einer Beispiel-Datei

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = "$A$36" Then
        If Range("A36").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A36").Value = ""
    Worksheets("Deckblatt").Range("A36").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B36").Value = ""
    Worksheets("Deckblatt").Range("B36").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A37").Value = "U"                    'Wingdings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A37").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B37").Value = "S"                    'Wingdings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B37").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("37").Hidden = False
    Rows("37").RowHeight = 15
    Range("B46").Select
   
    End If
    End If

    If Target.Address = "$A$37" Then
        If Range("A37").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A37").Value = ""
    Worksheets("Deckblatt").Range("A37").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B37").Value = ""
    Worksheets("Deckblatt").Range("B37").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A38").Value = "U"
    Worksheets("Deckblatt").Range("A38").Interior.ColorIndex = 35
    Worksheets("Deckblatt").Range("B38").Value = "S"
    Worksheets("Deckblatt").Range("B38").Interior.ColorIndex = 22
   
    Rows("38").Hidden = False
    Rows("38").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$B$37" Then
        If Range("B37").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A37").Value = ""
    Worksheets("Deckblatt").Range("A37").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B37").Value = ""
    Worksheets("Deckblatt").Range("B37").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A36").Value = "U"
    Worksheets("Deckblatt").Range("A36").Interior.ColorIndex = 35
    Rows("37").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$A$38" Then
        If Range("A38").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A38").Value = ""
    Worksheets("Deckblatt").Range("A38").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B38").Value = ""
    Worksheets("Deckblatt").Range("B38").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B39").Value = "S"
    Worksheets("Deckblatt").Range("B39").Interior.ColorIndex = 22
   
    Rows("39").Hidden = False
    Rows("39").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$B$38" Then
        If Range("B38").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B38").Value = ""
    Worksheets("Deckblatt").Range("B38").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A37").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A37").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B37").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B37").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("38").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$A$39" Then
        If Range("A39").Value = "" Then
        Range("B46").Select
    Else
       
    Worksheets("Deckblatt").Range("A39").Value = ""
    Worksheets("Deckblatt").Range("A39").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B39").Value = ""
    Worksheets("Deckblatt").Range("B39").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B40").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B40").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("40").Hidden = False
    Rows("40").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$B$39" Then
        If Range("B39").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B39").Value = ""
    Worksheets("Deckblatt").Range("B39").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A38").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A38").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B38").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B38").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("39").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$A$40" Then
        If Range("A40").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A40").Value = ""
    Worksheets("Deckblatt").Range("A40").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B40").Value = ""
    Worksheets("Deckblatt").Range("B40").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B41").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B41").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("41").Hidden = False
    Rows("41").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$B$40" Then
        If Range("B40").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B40").Value = ""
    Worksheets("Deckblatt").Range("B40").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A39").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A39").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B39").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B39").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("40").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$A$41" Then
        If Range("A41").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A41").Value = ""
    Worksheets("Deckblatt").Range("A41").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B41").Value = ""
    Worksheets("Deckblatt").Range("B41").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B42").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B42").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("42").Hidden = False
    Rows("42").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$B$41" Then
        If Range("B41").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B41").Value = ""
    Worksheets("Deckblatt").Range("B41").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A40").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A40").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B40").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B40").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("41").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
    If Target.Address = "$A$42" Then
        If Range("A42").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A42").Value = ""
    Worksheets("Deckblatt").Range("A42").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B42").Value = ""
    Worksheets("Deckblatt").Range("B42").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B43").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B43").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("43").Hidden = False
    Rows("43").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
  
If Target.Address = "$B$42" Then
        If Range("B42").Value = "" Then
        Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B42").Value = ""
    Worksheets("Deckblatt").Range("B42").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A41").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A41").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B41").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B41").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("42").Hidden = True
    Range("B46").Select
   
    End If
    End If

If Target.Address = "$A$43" Then
    If Range("A43").Value = "" Then
    Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("A43").Value = ""
    Worksheets("Deckblatt").Range("A43").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B43").Value = ""
    Worksheets("Deckblatt").Range("B43").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B44").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B44").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("44").Hidden = False
    Rows("44").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
If Target.Address = "$B$43" Then
    If Range("B43").Value = "" Then
    Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B43").Value = ""
    Worksheets("Deckblatt").Range("B43").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A42").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A42").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B42").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B42").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("43").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
If Target.Address = "$A$44" Then
    If Range("A44").Value = "" Then
    Range("B46").Select
    Else

    Worksheets("Deckblatt").Range("A44").Value = ""
    Worksheets("Deckblatt").Range("A44").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B44").Value = ""
    Worksheets("Deckblatt").Range("B44").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("B45").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B45").Interior.ColorIndex = 22       'Zellfarbe rot
   
    Rows("45").Hidden = False
    Rows("45").RowHeight = 15
    Range("B46").Select
   
    End If
    End If
   
If Target.Address = "$B$44" Then
    If Range("B44").Value = "" Then
    Range("B46").Select
    Else
   
    Worksheets("Deckblatt").Range("B44").Value = ""
    Worksheets("Deckblatt").Range("B44").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A43").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A43").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B43").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B43").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("44").Hidden = True
    Range("B46").Select
   
    End If
    End If
   
If Target.Address = "$B$45" Then
    Worksheets("Deckblatt").Range("B45").Value = ""
    Worksheets("Deckblatt").Range("B45").Interior.ColorIndex = xlNone
    Worksheets("Deckblatt").Range("A44").Value = "U"                    'Windings 3 Zeichen "aufklappen"
    Worksheets("Deckblatt").Range("A44").Interior.ColorIndex = 35       'Zellfarbe grün
    Worksheets("Deckblatt").Range("B44").Value = "S"                    'Windings 3 Zeichen "zuklappen"
    Worksheets("Deckblatt").Range("B44").Interior.ColorIndex = 22       'Zellfarbe rot
    Rows("45").Hidden = True
    Range("B46").Select
    End If
   
End Sub

.xlsm   Rechnung_V1.000_Stand_200905_0939.xlsm (Größe: 78,75 KB / Downloads: 3)
Top
#2
anbei eine idee, die mit den beforedubbleclick arbeitet, 
sieht vielleicht etwas umständlich aus, aber es scheint zu funktionieren.
Die Zeilenbegrenzung gibst du an einer Stelle ein.

Die Lösung mit der Textbox scheint recht merkwürdig. Warum schreibst du die Texte nicht direkt in die Zeilen.


.xlsm   zeile klappen.xlsm (Größe: 66,68 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • G****
Top
#3
Hallo Ralf,

VIELEN DANK.
Scheint wirklich zu funktionieren, ich habe Deine Lösung kurz getestet.
Die Anforderung Zeilen nach und nach einzublenden ist nur ein Teil einer größeren Aufgabe.
Dazu gehört auch die Möglichkeit "Fließtext" einzugeben wie in Word. Das Texfeld soll dies ermöglichen.
Weiterhin habe ich vor, (Be-)Rechnungspositionen zeilenenweise einzufügen, und sie je nach Anforderung mit VBA anzupassen.
Unglücklicherweise handelt es sich um diese (Be-)Rechnungspositionen /-zeilen nicht um den klassischen Fall: Menge x Einzelbetrag = Gesamtbetrag.
Ich komme sicher diesbezüglich nochmal darauf zurück.
Schöne Grüße

G****
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste