Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke

Forumthread: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke

Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
06.06.2024 12:56:26
goetzi
Hallo Forum,

ich hatte hier, bezüglich meines Problems, schon einmal einen Beitrag (Januar 2024) erstellt und auch eine sehr gute Hilfe erhalten (vielen herzlichen Dank an volti).
Leider konnte ich aus unterschiedlichen Gründen das Projekt erst jetzt wieder in Angriff nehmen und stehe jetzt leider wieder fast am Anfang.

Es geht darum, mittels VBA, Rechtecke in bestimmten Dicken zu zeichnen (z. B. Schichtenaufbau einer Holzbalkendecke). Diese Rechtecke/Schichtenaufbauten sollen sich automatisch anpassen, wenn mittels DropDowns Parameter (wie z. B. Dicke, Material, Farbe) geändert werden.

Das mir damals zur Verfügung gestellte Script läuft, bei 2 Schichten, ohne Probleme. Jetzt möchte ich gerne eine 3. oder 4. Schicht einfügen, nur hänge ich da leider fest.
Das eine 3. Schicht berücksichtigt wird habe ich hinbekommen, sie wird auch angezeigt, nur leider nicht in der richtigen Höhe.

https://www.herber.de/bbs/user/169887.xlsm

Mein Problem liegt wahrscheinlich in folgender Code-Zeile:
iPos = oShpL.Top - iDick(i) - iDick(i - 1) ' Position der Linie

Die Berechnung ist mir leider nicht ganz klar :-(
Irgendwie steh ich auf dem Schlauch.

Ich habe die Beispieldatei angehängt und würde mich über eine Starthilfe (wahrscheinlich banal) sehr freuen und bedanke mich dafür schon vielmals im Voraus.

Viele Grüße
götzi
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
07.06.2024 11:22:43
volti
Hallo Goetzi,

falls noch nicht gelöst, hier eine Idee.....

Hier kannst Du die Anzahl der Schichten dynamisch vorgeben. Ich denke, dass auch die Farbentnahme aus den Feldern in Spalte B ganz sinnvoll wäre.
Probieire es halt mal aus.
Code:


Sub Oberseite_X_Lage(Target As Range) Dim oShp As Object, oShpL As Object, sName As String Dim iPos As Long, iDick(10) As Long, iFarbe As Long Dim ii As Integer, i As Integer With Target For i = 2 To 10 iDick(i) = .Parent.Cells(i, "C").Value ' Dicke der Linie If .Parent.Cells(i, "A").Value = "" Then Exit For ' Vorgabenende => raus Next i If (.Column = 1 Or .Column = 3) And .Row > 1 And .Column < i Then Set oShpL = .Parent.Shapes.Range("Gerader Verbinder 1161") ' Linie ansprechen iPos = oShpL.Top - 5 For i = 2 To i sName = "Oberseite_" & (i - 1) & "_Lage" ' Name des Rechtecks On Error Resume Next Set oShp = Nothing Set oShp = .Parent.Shapes.Range(sName) ' Rechteck ansprechen If oShp Is Nothing Then ' Rechteck neu anlegen Set oShp = .Parent.Shapes.AddShape(1, 10, iPos, 10, 10) oShp.Name = sName ' Einen Namen vergeben End If On Error GoTo 0 ' Rechteck bearbeiten iFarbe = .Parent.Cells(i, "B").Interior.Color iPos = iPos - iDick(i) ' Position der Linie With oShp .Visible = iDick(i) <> 0 ' Rechteck sichtbar? .Top = iPos ' Position Top .Height = iDick(i) '- 3 ggf. Abstand setzen ' Höhe (Dicke) setzen .Left = oShpL.Left ' Position links .Width = oShpL.Width ' Breite .Fill.ForeColor.RGB = iFarbe ' Farbe setzen .Line.ForeColor.RGB = iFarbe ' Linienfarbe setzen End With Next i End If End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige
AW: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
07.06.2024 12:57:46
goetzi
Vielen, vielen Dank für Eure Hilfe,

ich wollte nun noch einen Aufbau unterhalb der Bezugslinie einbauen, dachte ich kopiere den Code und ändere die Variablen.
Dabei bin ich aber wieder an meine Grenzen gestoßen, denke aber das es an folgenden Punkten hängt:
1.) Die Dicke wird generell aus Spalte "C" ausgelesen, müsste aber auf die Zellen für "oben" bzw. "unten" eingeschränkt werden
2.) Das Gleiche gilt für die Spalte "A" und den Materialien
3.) Ich komme mit der Berechnung der Variablen iPos nicht zurecht.
Ich verstehe das so: Wenn ich die Schichten nach oben aufbaue, dann ziehe ich von der Bezugslinie die jeweilige Dicke ab, da sich ".Top" immer auf die linke obere Ecke des Rechteckes bezieht.
Wenn ich nach unten aufbaue, dachte ich, addiere ich die Dicken. Das funktioniert auch aber halt mit der Einschränkung, das das erste Rechteck um die Dicke der erste Schicht nach unten von der Bezugslinie entfernt ist. Kommt daher da sich ".Top" ja auf die linke obere Ecke bezieht.

https://www.herber.de/bbs/user/169905.xlsm

Wenn ich hier nochmal Eure Unterstützung bekomme, würde ich mich sehr freuen.

Schon mal vielen Dank, herzliche Grüße und ein schönes Wochenende.



Anzeige
AW: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
07.06.2024 13:06:43
Onur
Ist ja lustig.
ICH löse dein Problem und DU bedankst dich kurz mal pauschal bei ALLEN statt bei mir und willst weitere Hilfe.
AW: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
07.06.2024 14:40:04
goetzi
Hallo Onur,

ich habe mich nicht "pauschal" bei "Allen" hier im Forum bedankt, sondern der Dank ging an DICH sowie an VOLTI (der mir auch eine Lösung
aufzeigte) und bezog sich einzig auf diesen Beitrag.

Daher nochmals vielen Dank für Deine geleistete und vielleicht/hoffentlich weitere Hilfe.
Auch nochmals vielen Dank an Volti.

Schöne Grüße
goetzi
Anzeige
AW: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
07.06.2024 13:35:14
volti
Hallo Goetzi,

hier eine (ungetestete Idee):
    For i = 7 To 8

sName = "Unterseite_" & (i - 6) & "_Lage" ' Name des Rechtecks
iDicku(i) = Tabelle1.Cells(i, "C").Value ' Dicke der Linie
iPosu = oShpL.Top + 2 'ggf. anpassen
For ii = 7 To i
iPosu = iPosu + iDicku(ii - 1)
Next ii


Beim ersten Durchgang darf nichts addiert werden, alle weiteren immer die Dicke vom vorhergehenden.
Da ja erst beim Index7 angefangen wird, kann man beim ersten Durchgang auch die vorhergehende Dicke aus Index6 nehmen. Die ist dann 0, weil nicht gesetzt.

PS: Da ich hier mit zwei unterschiedlichen Dickeindexbereichen arbeite, kannst Du auch nur DIM Dicke(8) statt Dicko und Dicku verwenden.

Gruß
KH
Anzeige
AW: Rechtecke zeichnen per VBA-Script für z. B. Holzbalkendecke
07.06.2024 19:35:54
goetzi
Hallo volti,

dank des Code-Schnipsels hab ich das Problem geknackt und es läuft wie es soll.

Vielen Dank und schönes Wochenende

Gruß
goetzi
;

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