Code vereinfachen

Bild

Betrifft: Code vereinfachen
von: Fabi
Geschrieben am: 18.11.2015 12:34:23

Hey Leute,
kann mir vielleicht jemand helfen diesen Code zu vereinfachen,
sofern es möglich ist?
Vielleicht kann man das auch eleganter lösen das Ganze.
Ich bin für alle Vorschläge offen.
Erklärung:
Ich habe 3 Bereiche „A – B – C“ --Zeile 6,12 und 18
Ich möchte, dass die Zeilengröße immer wieder auf eine bestimmte Größe zurück gesetzt wird, wenn keiner dieser 3 Bereiche ausgewählt wird.
Wenn eine Zelle dieses Bereiches ausgewählt wir, dann prüft der Code, ob Text enthalten ist. Wenn das der Fall ist, dann macht der Code eine automatische Zeilengröße.
Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("Bereich_A,Bereich_B,Bereich_C")) Is Nothing Or ActiveCell.Value  _
= "" Then
        'wenn Zelle leer oder anderer Bereich ausgewählt ist
        If Union(Rows(6), Rows(12), Rows(18)).RowHeight = 96 Then
            Exit Sub
        Else
'            Call Aufheben
                Union(Rows(6), Rows(12), Rows(18)).RowHeight = 96
        End If
    Else
        'wenn in Zelle Text und ein Bereich ausgewählt ist
        Call Aufheben
            ActiveCell.Rows.AutoFit
    End If
    
'    Call Schutz
End Sub

Grüße Fabi

Bild

Betrifft: Code vereinfachen; Nachfrage
von: Rudi Maintaire
Geschrieben am: 18.11.2015 12:48:05
Hallo,
warum arbeitest du mal mit Bereichsnamen und mal mit Zeilen?
Deine erste Bedingung sagt Zelle nicht in Zeile 6,12,18 oder leer. D.h. wenn leer und doch in 6,12,18 wird die Zeilenhöhe angepasst. Soll das?

If Union(Rows(6), Rows(12), Rows(18)).RowHeight = 96 Then

funktioniert 1. nicht bei unterschiedlichen Zeilenhöhen und ist 2. überflüssig.
Gruß
Rudi

Bild

Betrifft: AW: Code vereinfachen; Nachfrage
von: Fabi
Geschrieben am: 18.11.2015 13:37:36
Hey Rudi,
danke für deine schnelle Antwort.
das ganze war so gedacht:
Wenn ich in eine Zelle in diesen Bereich rein gehe und doppelt drauf klicke, dann aktiviert sich ein anderes Makro, womit ich dann diese Zelle mit Text fülle, der jedesmal unterschiedlich ist und mal mehr mal weniger ist.
Wenn ich nun wieder in die Zelle rein gehe, dann soll automatisch Zeilenhöhe aktiviert werden.
Wenn ich außerhalb dieses Bereiches bin (oder in einem Bereich bin, aber noch keine Text in der Zelle), dann sollen die Bereiche A-C wieder diw Zeilengröße von "96" bekommen.
es soll am Format meiner Tabelle nix geändert werden und immer wieder in den "Ausgangszustand" zurück gesetzt werden.
das ganze war ein Versuch wie ich es geschrieben habe.
Dashalb ja dieser Beitrag, ob man dies anderes machen kann oder nicht
ich hoffe es war ein wenig verständlich :-D
grüße Fabi

Bild

Betrifft: AW: Code vereinfachen; Nachfrage
von: fcs
Geschrieben am: 19.11.2015 14:05:37
Hallo Fabi,
ob einfacher oder nicht ist halt relativ. Ich würde hier mit Select Case arbeiten und auf die Zeilennummern prüfen.
Gruß
Franz

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    If Target.Cells.Count = 1 Then
        Select Case Target.Row
            Case 6, 12, 18
                Call Aufheben
                If Target.Value <> "" Then
                    Target.EntireRow.AutoFit
                Else
                    Target.EntireRow.RowHeight = 96
                End If
            Case Else
                If Not (Rows(6).RowHeight = Rows(12).RowHeight _
                        And Rows(18).RowHeight = Rows(12).RowHeight) Then
                    Call Aufheben
                    Union(Rows(6), Rows(12), Rows(18)).RowHeight = 96
                End If
        End Select
    End If
      
 '    Call Schutz
 
End Sub
Sub Aufheben()
    'was passier hier denn?
End Sub


Bild

Betrifft: AW: Code vereinfachen; Nachfrage
von: Fabi
Geschrieben am: 20.11.2015 12:10:06
Hey Franz,
danke dir.
so kann man das ganze auch schreiben - muss echt noch viel lernen :-(
das "aufheben" war einfach nur den blattschuzt zu entfernen.
aber ich habe dann anstatt auf ein extra modul zu beziehen es mit in den code rein geschrieben
danke dir noch einmal
grüße Fabi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Code vereinfachen"