Combibox
07.12.2020 13:12:31
sofie
ich habe eine (weitere) Frage zu einem Problem. Mein Ziel ist es ein Tool zu bauen, mit dem ich die Konfiguration einer Schnecke für einen Compoundierer darstellen kann (besteht aus ca. 30 Elementen). Die Bilder der einzelnen Elemente sollen zu einem Gesamtbild zusammen gefügt werden. Zusätzlich soll beim einfügen jedes Elements auch die dazugehörige Länge eingefügt werden damit man immer einen Überblick hat wo man gerade ist (und die maximal Länge nicht überschreitet).
Ich hab eine Tabelle mit den Elementen (Grafik und Länge). Der Code, den ich bisher erstellt habe funktioniert - ist aber unpraktisch. Ich würde gerne ein Combibox einfügen, damit die Fehlerquote beim eintippen reduziert wird und ich die gewünschten Elemente nur nacheinander in einer Dropdownliste anklicken muss. Das Bild soll sich dann aus den ausgewählten Elementen ergeben.
Des Weiteren habe ich es nicht geschafft, die Länge mit dem jeweiligen Bildern zu verknüpften, so dass diese gleichzeitig eingefügt werden. Man also beim wählen und erstellen der Gesamten Schnecke sieht wie lang sie ist. Kann mir hier jemand helfen?
https://www.herber.de/bbs/user/142137.xlsx
Option Explicit
Private TopPosBild As Integer
Private LeftPosBild As Integer
Public Sub Main()
'Variablen
Dim strElementgewaehlt As String
Dim objShape As Shape
'Bildposition
TopPosBild = Application.Worksheets("Test1").Range("$D$11").Top
LeftPosBild = Application.Worksheets("Test1").Range("$D$11").Left + 10
'Vorhandenes Bild löschen
Application.Worksheets("Test1").Activate
For Each objShape In ActiveSheet.Shapes
If objShape.Top = TopPosBild Then
objShape.Delete
End If
Next
'Schleife über die gewünschten Elemente
Do
strElementgewaehlt = InputBox("Wählen Sie Element 1", "Schneckentyp auswählen", "Grafik _
_
_
3")
If strElementgewaehlt "" Then Call AddImage(strElementgewaehlt)
Loop While strElementgewaehlt ""
End Sub
Public Sub AddImage(strElementgewaehlt As String)
'Variablen
Dim objShape As Shape
'Bild in Tabellenblatt "Tabelle" suchen und kopieren
Application.Worksheets("Tabelle").Activate
ActiveSheet.Shapes.Range(Array(strElementgewaehlt)).Select: Selection.Copy 'statt _
Grafik 3, das Ergebnis der InputBox
'Bild in Tabellenblatt "Konfiguration" einfügen
Application.Worksheets("Test1").Activate
Range("$D$11").Select
ActiveSheet.Pictures.Paste.Select
'Bilder nebeneinander anordnen
For Each objShape In ActiveSheet.Shapes
If objShape.TopLeftCell.Address = "$D$11" Then '$D$11 ist die Zelle in der das Bild _
_
landen soll
objShape.Left = LeftPosBild
LeftPosBild = LeftPosBild + objShape.Width 'nächstes Bild rechts davon
End If
Next
End Sub
Anzeige