Anzeige
Archiv - Navigation
1456to1460
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 vereinfachen

Code vereinfachen
18.11.2015 12:34:23
Fabi
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Code vereinfachen; Nachfrage
18.11.2015 12:48:05
Rudi
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

AW: Code vereinfachen; Nachfrage
18.11.2015 13:37:36
Fabi
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

Anzeige
AW: Code vereinfachen; Nachfrage
19.11.2015 14:05:37
fcs
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

Anzeige
AW: Code vereinfachen; Nachfrage
20.11.2015 12:10:06
Fabi
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige