19.06.2016, 20:28
Hallo,
ich habe mich bisher nicht viel mit VBA beschäftigen müssen. Jetzt habe ich irgendwie was zusammengebastelt. Das ist zwar sicher nicht die optimale Lösung, aber funktioniert.
Sagen wir so, es funktioniert, solange ich nicht Zeilen einfüge oder sich die Zeilenhöhe ändert.
Der Punkt ist, dass ich im Code Bereiche festgelegt habe, die sich aber verändern, also muss es irgendwie variabel sein.
Es wurde für einige Bereiche die Formatierung festgelegt. Außerdem ist im Code enthalten, dass sich die Zeilenhöhe automatisch anpasst, wenn der Text nicht passt, gerade für verbundene Zellen.
Da sich die Bereiche verändern, also weitere Zeilen hinzu kommen, sollen die Bereiche in VBA nun automatisch erweitert werden, damit die Formatierung beibehalten wird und nicht in konflikt mit anderen Bereichen kommt und das Format dann überschreibt.
Anbei die Tabelle und der Code. Bitte stellt Fragen, damit ich dann genauer darauf eingehen kann, gerne nehme ich auch Tipps zur generellen Verbesserung des Codes entgegen.
Deckblatt
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
ich habe mich bisher nicht viel mit VBA beschäftigen müssen. Jetzt habe ich irgendwie was zusammengebastelt. Das ist zwar sicher nicht die optimale Lösung, aber funktioniert.
Sagen wir so, es funktioniert, solange ich nicht Zeilen einfüge oder sich die Zeilenhöhe ändert.
Der Punkt ist, dass ich im Code Bereiche festgelegt habe, die sich aber verändern, also muss es irgendwie variabel sein.
Es wurde für einige Bereiche die Formatierung festgelegt. Außerdem ist im Code enthalten, dass sich die Zeilenhöhe automatisch anpasst, wenn der Text nicht passt, gerade für verbundene Zellen.
Da sich die Bereiche verändern, also weitere Zeilen hinzu kommen, sollen die Bereiche in VBA nun automatisch erweitert werden, damit die Formatierung beibehalten wird und nicht in konflikt mit anderen Bereichen kommt und das Format dann überschreibt.
Anbei die Tabelle und der Code. Bitte stellt Fragen, damit ich dann genauer darauf eingehen kann, gerne nehme ich auch Tipps zur generellen Verbesserung des Codes entgegen.
Deckblatt
B | C | D | E | F | G | H | I | J | K | L | M | |
1 | Arbeitspaket | |||||||||||
2 | ||||||||||||
3 | Projektname / Nr.: | Teilprojekt: | ||||||||||
4 | Arbeitspaket-Nr. oder PSP-Code: | AP-Verantwortlich: | ||||||||||
5 | AP-Name: | |||||||||||
6 | ||||||||||||
7 | Plandatum Start Soll: | Plandatum Ende Soll: | ||||||||||
8 | Plandatum Start Ist: | Plandatum Ende Ist: | ||||||||||
9 | Dauer: | Bericht an: | ||||||||||
10 | Ressourcen: | 0,0 | ||||||||||
11 | Budget: | |||||||||||
12 | Personalkosten: | |||||||||||
13 | Invest: | 0 € | ||||||||||
14 | Ext. Kosten: | 0 € | ||||||||||
15 | ||||||||||||
16 | Chancen: | |||||||||||
17 | Risiken: | |||||||||||
18 | Vorgänger: | |||||||||||
19 | Nachfolger: | |||||||||||
20 | ||||||||||||
21 | Arbeitsschritte/ Aktivitäten | |||||||||||
22 | ||||||||||||
23 | Lfd-Nr. | Arbeitsschritte/ Aktivitäten | Verantwortlich | Mitwirkende | Aufwand in Projekttagen | Ext. Kosten | Invest | |||||
24 | 1 | |||||||||||
25 | 2 | |||||||||||
26 | 3 | |||||||||||
27 | 4 | |||||||||||
28 | 5 | |||||||||||
29 | 6 | |||||||||||
30 | 7 | |||||||||||
31 | 8 | |||||||||||
32 | 9 | |||||||||||
33 | 10 | |||||||||||
34 | Summe: | 0,0 | 0 € | 0 € | ||||||||
35 | ||||||||||||
36 | Arbeitspaket abgeschlossen: _____________________________________ ________________________________________ Datum/ Unterschrift AP-Verantwortliche/r Datum/ Unterschrift Projektleiter/in |
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
' Blattschutz aufheben
ActiveSheet.Unprotect Password:="tente"
With Target.MergeArea
' Zellverbund aufheben
.UnMerge
' Ausrichtung über alle Zellen
.HorizontalAlignment = xlCenterAcrossSelection
' automatische Zeilenhöhe
.EntireRow.AutoFit
' Zellen verbinden
.Merge
End With
' Bereiche setzen und formatieren
Dim bereich1 As Range
Dim bereich2 As Range
Dim gesamtbereich1 As Range
Set bereich1 = Range("B23:B47")
Set bereich2 = Range("C23:M23")
Set gesamtbereich1 = Union(bereich1, bereich2)
gesamtbereich1.HorizontalAlignment = xlCenter
gesamtbereich1.VerticalAlignment = xlCenter
Dim bereich3 As Range
Dim bereich4 As Range
Dim bereich5 As Range
Dim gesamtbereich2 As Range
Set bereich3 = Range("B36:M36")
Set bereich4 = Range("B3:M19")
Set bereich5 = Range("C24:M34")
Set gesamtbereich2 = Union(bereich3, bereich4, bereich5)
gesamtbereich2.HorizontalAlignment = xlLeft
gesamtbereich2.VerticalAlignment = xlCenter
With ActiveSheet
' Blattschutz setzen, Rechte vergeben
' https://msdn.microsoft.com/de-de/library/office/ff840611.aspx
.EnableSelection = xlUnlockedCells
.Protect Password:="tente", AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFormattingCells:=True
End With
End Sub