Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1236to1240
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Wie frisch erstelltes Shape verändern

VBA: Wie frisch erstelltes Shape verändern
Berndi
Hallo !
Ich habe folgendes Problem:
Ich rufe in einem Modul mit CommandBars.FindControl(ID:=1177).Execute die Funktion zum Erstellen eines Shapes auf.
Nachdem der Bediener dann geklickt hat, erscheint das Shape auch ordentlich auf der Seite.
Ich möchte jetzt jedoch das Shape von Aussehen her verändern, weiß jedoch nicht so recht wie ich das anstellen soll.
Dabei geht es nicht um die Art und Weise der Veränderung des Aussehens, sodern eher darum, wie ich das erstellte Shape ansteuere ...
Kann mir bitte jemand helfen ?
Gruß,
Berndi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Wie frisch erstelltes Shape verändern
06.11.2011 10:27:41
Nepumuk
Hallo,
wie wäre es denn mit:
Liebes frisch erstelltes Shape ....
oder so:
Public Sub test()
    Dim objShape As Shape
    Set objShape = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
    With objShape
        .Top = 0
        .Left = 0
    End With
    Set objShape = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA: Wie frisch erstelltes Shape verändern
06.11.2011 10:51:10
Berndi
Danke für die Antwort, aber leider klappt das nicht, denn das Makro läuft bei CommandBars.FindControl(ID:=1177).Execute weiter, sodass Dein Vorschlag ohne Effekt durchläuft, da ja noch kein Shape existiert.
Public Sub test()
CommandBars.FindControl(ID:=1177).Execute
Dim objShape As Shape
Set objShape = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
With objShape
.Top = 0
.Left = 0
End With
Set objShape = Nothing
End Sub

AW: VBA: Wie frisch erstelltes Shape verändern
06.11.2011 11:15:31
Berndi
Danke für die Antwort, aber leider klappt das nicht, denn das Makro läuft bei CommandBars.FindControl(ID:=1177).Execute weiter, sodass Dein Vorschlag ohne Effekt durchläuft, da ja noch kein Shape existiert.
Public Sub test()
CommandBars.FindControl(ID:=1177).Execute
Dim objShape As Shape
Set objShape = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
With objShape
.Top = 0
.Left = 0
End With
Set objShape = Nothing
End Sub

Anzeige
AW: VBA: Wie frisch erstelltes Shape verändern
06.11.2011 10:49:39
Reinhard
Hallo Bernd,
das geht in einem Makro m.E. mit Execute nicht denn nach Execute ist ja das Shape
noch gar nicht auf dem Blatt, auf dem Blatt sieht man nur das Kreuzchen womit du das Shape erst noch einfügen mußt.
Beweis:
Sub nn()
CommandBars.FindControl(ID:=1177).Execute
MsgBox ActiveSheet.Shapes.Count
End Sub
Eine Alternative ist sowas:

Sub Makro2()
Dim CB As Object
Set CB = ActiveSheet.Shapes.AddShape(msoShapeLineCallout3, 100, 100, 100, 100)
With CB.OLEFormat.Object
.Text = "huhu"
.Left = 300
.Top = 100
.Width = 50
.Height = 80
With .Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
.ShapeRange.Adjustments.Item(1) = -13.0606
.ShapeRange.Adjustments.Item(2) = 1.5283
.ShapeRange.Adjustments.Item(3) = -0.9697
.ShapeRange.Adjustments.Item(4) = -0.5944
.ShapeRange.Adjustments.Item(5) = 0.5909
.ShapeRange.Adjustments.Item(6) = 0.1321
End With
End Sub

Gruß
Reinhard
Anzeige
AW: VBA: Wie frisch erstelltes Shape verändern
06.11.2011 12:17:41
Berndi
Danke für den Hinweis, aber das ist keine Alternative, denn ich möchte, dass das Shape an der Cursorposition erstellt wird.
Gruß,
Berndi
AW: VBA: Wie frisch erstelltes Shape verändern
06.11.2011 16:26:44
Reinhard
Hallo Bernd,
was genau bedeute "Curserposition"?
Irgendwie heißt das, du versciebst dann im Blatt den Curser der halt grad ein Kreuz ist
und "ziehst" dann die Form auf.
So wie ich da deine Form deute willst du z.B. für Zelle D5 so eine Form erstellen, d.h. diese geknickte
Linie soll von Zelle D5 zu dem "Textfeld" der Form gehen.
Das kann man doch mit meinem Code erreichen, du markierst D5 und startest das makro.
Dann mußt du das nicht manuell positionieren.
Natürlich müßte man dazu den Code anpassen aber prinzipiell sollte das gehen *glaub*
Gruß
Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige