Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Größe einer Form mit Zellwert verknüpfen

Größe einer Form mit Zellwert verknüpfen
25.03.2017 19:58:37
Max
Hallo,
ich würde gerne mehrere Rechtecke nebeneinander in aufsteigender Anordnung mit Zellwerten verbinden, sodass jedes Rechteck seine Höhe aus dem jeweiligen Zellwert zieht. Da die vorhanden Diagramme zu starr sind würde ich dies gerne selbst verformeln sofern möglich.
Vielen Dank vorab für jegliche Tipps.
Max
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Größe einer Form mit Zellwert verknüpfen
27.03.2017 06:16:53
fcs
Hallo Max,
lade mal eine Beispieldatei hoch mit ggf. anonymisierten Daten.
Grundsätzlich kann man die Rechtecke (Shape-Objekte) über den Namen ansprechen und deren Höhe dann auf den gewünschten Wert setzen.
LG
Franz
Beispiel-Makro: Höhe der Rechtecke ist hier in den Zellen in Zentimetern angegeben.
Höhe in Punkt ist auch möglich, dann muss Parameter bolCentimeter auf False gesetzt werden.
Sub Test()
Dim wks As Worksheet
Set wks = ActiveSheet
Dim dblUnten As Double
With wks
'Postition untere Linie Rechtecke
dblUnten = .Range("B20").Top
Call prcShapeHeight(objShape:=.Shapes("Rechteck 1"), dblHeight:=.Range("B1").Value, _
dblBottom:=dblUnten, bolCentimeter:=True)
Call prcShapeHeight(objShape:=.Shapes("Rechteck 2"), dblHeight:=.Range("C1").Value, _
dblBottom:=dblUnten, bolCentimeter:=True)
Call prcShapeHeight(objShape:=.Shapes("Rechteck 3"), dblHeight:=.Range("D1").Value, _
dblBottom:=dblUnten, bolCentimeter:=True)
Call prcShapeHeight(objShape:=.Shapes("Rechteck 4"), dblHeight:=.Range("E1").Value, _
dblBottom:=dblUnten, bolCentimeter:=True)
End With
End Sub
Public Sub prcShapeHeight(objShape As Shape, dblHeight As Double, dblBottom As Double, _
Optional bolCentimeter As Boolean = True)
With objShape
If bolCentimeter = True Then
.Height = Application.CentimetersToPoints(dblHeight)
Else
.Height = dblHeight
End If
.Top = dblBottom - .Height
End With
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Größe einer Form mit Zellwert verknüpfen in Excel


Schritt-für-Schritt-Anleitung

  1. Formen erstellen: Zunächst musst du die benötigten Rechtecke (Shapes) in deinem Excel-Dokument erstellen. Gehe dazu auf die Registerkarte "Einfügen" und wähle "Formen". Füge mehrere Rechtecke hinzu.

  2. Zellwerte eintragen: Trage in die gewünschten Zellen die Werte ein, die die Höhe der Rechtecke bestimmen sollen. Zum Beispiel in die Zellen B1, C1, D1 und E1.

  3. Makro aktivieren: Drücke ALT + F11, um den VBA-Editor zu öffnen. Dort kannst du ein neues Modul einfügen, um das folgende Makro zu erstellen:

    Sub SetShapeHeight()
       Dim wks As Worksheet
       Set wks = ActiveSheet
       Dim dblUnten As Double
       With wks
           'Position untere Linie Rechtecke
           dblUnten = .Range("B20").Top
           Call prcShapeHeight(objShape:=.Shapes("Rechteck 1"), dblHeight:=.Range("B1").Value, _
           dblBottom:=dblUnten, bolCentimeter:=True)
           Call prcShapeHeight(objShape:=.Shapes("Rechteck 2"), dblHeight:=.Range("C1").Value, _
           dblBottom:=dblUnten, bolCentimeter:=True)
           Call prcShapeHeight(objShape:=.Shapes("Rechteck 3"), dblHeight:=.Range("D1").Value, _
           dblBottom:=dblUnten, bolCentimeter:=True)
           Call prcShapeHeight(objShape:=.Shapes("Rechteck 4"), dblHeight:=.Range("E1").Value, _
           dblBottom:=dblUnten, bolCentimeter:=True)
       End With
    End Sub
    
    Public Sub prcShapeHeight(objShape As Shape, dblHeight As Double, dblBottom As Double, _
    Optional bolCentimeter As Boolean = True)
       With objShape
           If bolCentimeter = True Then
               .Height = Application.CentimetersToPoints(dblHeight)
           Else
               .Height = dblHeight
           End If
           .Top = dblBottom - .Height
       End With
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und kehre zu Excel zurück. Führe das Makro SetShapeHeight aus, um die Höhe der Rechtecke anhand der Zellwerte zu setzen.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"
    Lösung: Stelle sicher, dass die Namen der Shapes korrekt eingegeben sind. Wenn du die Rechtecke umbenannt hast, passe die Namen im Makro an.

  • Fehler: Ungültiger Zellwert
    Lösung: Überprüfe, ob die Zellen, die du zur Bestimmung der Höhe verwendest, tatsächlich numerische Werte enthalten.


Alternative Methoden

Eine alternative Methode zur Verknüpfung von Zellwerten mit Formen ist die Verwendung von Excel-Formeln. Du könntest beispielsweise eine Hilfsspalte nutzen, um die Höhe zu berechnen, und dann die Shapes manuell anpassen. Diese Methode kann jedoch weniger flexibel sein als die Verwendung eines Makros.


Praktische Beispiele

Angenommen, du hast folgende Werte in den Zellen:

  • B1: 2 cm
  • C1: 3 cm
  • D1: 4 cm
  • E1: 5 cm

Wenn du das obige Makro ausführst, werden die Rechtecke entsprechend diesen Höhen angezeigt. Dies ist besonders nützlich für dynamische Berichte, in denen die Werte regelmäßig aktualisiert werden.


Tipps für Profis

  • Automatisierung: Du kannst die Ausführung des Makros automatisieren, indem du es an bestimmte Ereignisse bindest, wie z.B. eine Änderung in den Zellen.

  • Formate anpassen: Experimentiere mit verschiedenen Formaten und Farben der Shapes, um deine Daten visuell ansprechender zu gestalten.

  • Verknüpfung zu anderen Zellen: Du kannst auch die Breite oder andere Eigenschaften der Shapes mit Zellwerten verknüpfen, um noch mehr Anpassungen vorzunehmen.


FAQ: Häufige Fragen

1. Kann ich die Größe der Formen auch ohne Makros anpassen?
Ja, du kannst die Größe der Formen manuell in den Eigenschaften ändern, jedoch ist dies weniger effizient, wenn du viele Formen hast.

2. Funktioniert dieses Verfahren in allen Excel-Versionen?
Das beschriebene Verfahren funktioniert in Excel 2010 und späteren Versionen. Achte darauf, dass die VBA-Programmierung in deiner Excel-Version aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige