Shapes per Code erstellen

  • VB6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von FreeRider74.

    Shapes per Code erstellen

    Hi ich würde gerne mal wissen wie ich Shapes per Code erstelle, also nehmen wir an der Benutzer möchte einen Kreis in blau mit bestimmten Maßen haben und davon dann 5 Stück, wie kann ich also per code diesen Befehl ausführen lassen und wie kann ich dann mit den Shapes wieterarbeiten d.h. Onclick() Funktion und so weiter.

    Wäre nett wenn mir da jemand weiterhelfen könnte.

    Gruß Gentle
    Hi!

    Soweit ich weiß haben Shapes keine Ereignisse...
    Im Normalfall verwendet man auch keine Shapes sondern "zeichnet" seine Formen einfach in ne Picturebox oder auf die Form.
    Die Eregnisreaktion ist dann in Form_Click und du musst die Mausposition prüfen.


    so long..
    Andy
    Hallo Gentlemen,

    falls Dir das reicht, Du kannst einem Shape ein Makro zuordnen. Wenn Du dann auf das Shape klickst, dann führt es das Makro aus (zumindest im VBA für Excel).

    Im nachfolgenden ein Beispielcode (VBA - Excel). Mit einem CommandButton im Excel, der eine UserForm1 aufruft, in der 2 CheckBoxen und ein CommandButton(cb_ausführen) sind. Bei Aktivierung einer Checkbox schreibe ich in die Cells Daten weg, die das Shape (hier ein Rechteck) am Anfang haben soll - bei diesem Beispiel ist es der Name und die Platzierung des zu erstellenden Shapes. Die Zeile .onAction gibt an, welches Makro ausgeführt werden soll, wenn das Shape geklickt wird - hier müsstest Du für jedes Shape ein eigenes Makro mit einer laufenden Nummer schreiben (Public Sub aendern1, Public Sub aendern2)

    Private Sub cb_ausführen_Click()
    b = 0
    If UserForm1.CheckBox1.Value = True Then
    b = b + 1
    End If

    If UserForm1.CheckBox2.Value = True Then
    b = b + 1
    End If

    For a = 1 To b
    With Tabelle1.Shapes.AddShape(msoShapeRectangle, _
    144, 144, 72, 72)
    .Name = Tabelle1.Cells(a, 1)
    .Fill.ForeColor.RGB = RGB(255, 0, 0)
    .Left = Tabelle1.Cells(a, 2)
    .Top = Tabelle1.Cells(a, 3)
    .OnAction = "DieseArbeitsmappe.aendern" & a
    End With
    Next a

    UserForm1.Hide

    End Sub


    Hoffe es ist nicht zu verwirrend und ich habe es nicht zu umständlich gemacht. Vielleicht haben die Profis unter uns eine einfachere Lösung :)

    lg
    FreeRider74