Excel 2007: Makro - Zeilenhöhe an Wert anpassen

Morgen allerseits,

für eine Art Gantt-Diagramm in Excel suche ich nach einer Möglichkeit die Höhe jeder Zeile in einem gewissen Bereich an den Wert in z.B. Spalte E anzupassen. D.h. je höher der Wert in Spalte E, destö größer soll die jeweilige Zeilenhöhe sein. Hintergrund: In der Spalte steht sozusagen der Umfang/die Mächtigkeit einer Aufgabe, die dann in der entsprechenden GanttChart in der gleichen Zeile durch die Höhe des Balkens visualisiert werden soll.

Mit der bedingten Formatierung wird das vermutlich nicht klappen, oder!? Daher muss wohl ein VBA-Makro her. Davon wiederum habe ich leider keine Ahnung. Der Freund aller Ahnungslosen (Google) hat mir schonmal folgendes geliefert:

Private Sub Worksheet\_Change(ByVal Target As Range)
'Target wird auf den sich überschneidenden Bereich gesetzt, um bei
'Mehrfachmarkierungen die ausserhalb des eingeschränkten Bereiches
'liegenden Zellen nicht ebenfalls zu verändern

'Hier den Bereich anpassen
 Set Target = Application.Intersect(Target, Range("E1:E30"))

 'Wenn nicht innerhalb des Bereiches wird die Prozedur verlassen
 If Target Is Nothing Then Exit Sub

 'Errorhandling aktivieren, um im Falle eines Fehlers die Ereignisse
 'am Ende wieder zu aktivieren
 On Error GoTo ErrorHandler

 'Ereignisse ausschalten, um das Change-Ereignis nicht erneut auszulösen
 Application.EnableEvents = False

 'Eine Range-Variable deklarieren
 Dim rngZelle As Range

 'jede Zelle innerhalb des Target-Bereiches durchlaufen
 For Each rngZelle In Target


 'Dein Code zur Bearbeitung der einzelnen Zelle


 Next rngZelle
ErrorHandler:
 Application.EnableEvents = True 'Ereignisse wieder einschalten
End Sub

Für „'Dein Code zur Bearbeitung der einzelnen Zelle“ fehlt mir jetzt die entsprechende Syntax… Der Makro-Recorder verrät mir, dass es ungefähr so etwas sein müsste (Zeilenhöhe soll z.B. 12,75+Wert in der auslösenden Zelle sein):

 Rows(??????).Select
 Selection.RowHeight = 12.75+Cell.Value

Die ??? dokumentieren meine Ahnungslosigkeit - wie spreche ich die Zeile der auslösenden Zelle an?
Kann mir da jemand mit der Syntax helfen?
Oder bin ich vielleicht völlig auf einem Holzweg?

Besten Dank schonmal und Gruß,

KoF.

Hallo KoF,

hier mal eine kürzere Version (getestet mit Excel 2003, sollte aber auch mit 2007 laufen). Füge das Folgende in den Codebereich des entsprechenden Tabellenblattes ein:

Private Sub Worksheet\_Change(ByVal Target As Range)
 Rows(Target.Row & ":" & Target.Row).RowHeight = 12.75 + Target.Value
End Sub

Gruß, Andreas

Hallo Andreas,

allerherzlichsten Dank!

Ich habe Deinen Vorschlag noch mit dem ‚Intersect‘ kombiniert um den Effekt nur da zu haben, wo ich möchte - funktioniert perfekt!

Besten Gruß,

KoF.