Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
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

Zwei AutoShapes

Zwei AutoShapes
Sergej
Hallo Leute,
ich habe im aktivem Arbeitsblatt zwei AutoShapes.
Beim Klick auf AutoShape 2 starte ich das Makro "Bilder".
Abhängig welcher Text im AutoShape 1 steht, soll mit dem Klick auf AutoShape 2 ein Makro... ausgeführt werden.
Was habe ich falsch gemacht?
Sub Bilder()
Dim objShp As Shape
On Error GoTo ErrExit
Application.ScreenUpdating = False ' "Bildschirmflackern" vermeiden
Set objShp = ActiveSheet.Shapes(Application.Caller)
If objShp.Name = "AutoShape 1" Then
With objShp
Select Case .Text
Case "Alle-Tabellen darstellen"
Call Bilder_AT
Case "Heim-Tabelle darstellen"
Call Bilder_GT
Case "Auswärts-Tabelle darstellen"
Call Bilder_HT
Case Else
Call Bilder_Alle
End Select
End With
End If
ErrExit:
Application.ScreenUpdating = True
Set objShp = Nothing
End Sub
Danke vorab!
Gruß,
Sergej

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

Betreff
Benutzer
Anzeige
AW: Zwei AutoShapes
05.08.2011 18:38:03
Gerold
Hallo Sergej
Probiers mit
Select Case .AlternativeText
Mfg Gerold
Rückmeldung wäre nett.
Der .AlternativeText wird sich wahrscheinl...
06.08.2011 00:27:32
Luc:-?
…gar nicht ändern, Gerold!
Hi, Sergej,
.Text ist keine Eigenschaft von Shapes, sondern eine des Characters-Objekts, das durch die Characters-Methode des TextFrame-Objekts dargestellt wdn kann. Dieses wiederum wird hier durch die TextFrame-Eigenschaft des Shape-Objekts, das ein Mitglied der Shapes-Auflistung ist, dargestellt. Alles zusammengenommen ergibt dann für die „Select Case”-Zeile:
Select Case .TextFrame.Characters.Text
Das wäre schon alles! Mal in der VBE-Hilfe nachlesen!
Gruß Luc :-?
Anzeige
AW: Der .AlternativeText wird sich wahrscheinl...
06.08.2011 00:50:58
Sergej
Hallo Luc :-?
es hat sich nichts geändert. Es wird immer nur das Makro "Bilder_AT" ausgeführt.
Sub Bilder()
Dim objShp As Shape
On Error GoTo ErrExit
Application.ScreenUpdating = False ' "Bildschirmflackern" vermeiden
Set objShp = ActiveSheet.Shapes(Application.Caller)
If objShp.Name = "AutoShape 1" Then
With objShp
Select Case .TextFrame.Characters.Text
Case "Alle-Tabellen darstellen"
Call Bilder_AT
Case "Heim-Tabelle darstellen"
Call Bilder_GT
Case "Auswärts-Tabelle darstellen"
Call Bilder_HT
Case Else
Call Bilder_Alle
End Select
End With
End If
ErrExit:
Application.ScreenUpdating = True
Set objShp = Nothing
Shell Environ("WinDir") & "\explorer.exe /n,/e," & "D:\", vbNormalFocus
End Sub
Gruß,
Sergej
Anzeige
AW: Der .AlternativeText wird sich wahrscheinl...
06.08.2011 08:52:25
fcs
Hallo Sergej,
irgendwie ist die Logik in deinem Makro nicht ganz korrekt.
Wenn Shape "AutoShape 2" das Makro "Bilder" startet, dann ergibt sich nie Ergebnis "True" für die Zeile
If objShp.Name = "AutoShape 1" Then

und es passiert nichts, außer das der Explorer für Laufwerk "D" angezeigt wird.
Nachfolgend eine Fassung mit ein Paar mehr Prüfungen und Anzeigen, um dem Fehler auf die Spur zu kommen. Eigentlich müsste mein Vorschlag "Bilder_kurz" auch funktionieren.
VG
Franz
Sub Bilder() 'Wird von Autoshape 2 gestartet - Autoshape 2 = Caller
Dim objShp As Shape, sName As String
On Error GoTo ErrExit
Set objShp = ActiveSheet.Shapes(Application.Caller)
sName = objShp.Name
' Prüfung, ob "Autoshape 2" das Makro aufgerufen hat
If sName = "AutoShape 2" Then
Application.ScreenUpdating = False ' "Bildschirmflackern" vermeiden
Set objShp = ActiveSheet.Shapes("AutoShape 1")
With objShp.TextFrame.Characters
MsgBox "Text ""AutoShape 1"":" & .Text 'Testzeile
Select Case .Text
Case "Alle-Tabellen darstellen"
Call Bilder_AT
Case "Heim-Tabelle darstellen"
Call Bilder_GT
Case "Auswärts-Tabelle darstellen"
Call Bilder_HT
Case Else
Call Bilder_Alle
End Select
End With
Else
MsgBox "Makro ""Bilder"" wurde von Shape """ & sName & """ gestartet", _
vbInformation, "Information"
End If
ErrExit:
With Err
Select Case .Number
Case 0 'alles ist ok
Case -2147352571 'Makro wurde nicht von einem Shape gestartet
MsgBox "Makro wurde nicht von einem Shape gestartet", vbInformation, _
"Fehlerbehandlung - Makro ""Bilder"""
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, vbInformation, _
"Fehlerbehandlung - Makro ""Bilder"""
End Select
End With
Application.ScreenUpdating = True
Set objShp = Nothing
Shell Environ("WinDir") & "\explorer.exe /n,/e," & "D:\", vbNormalFocus
End Sub
Sub Bilder_kurz()
Dim objShp As Shape
On Error GoTo ErrExit
Application.ScreenUpdating = False ' "Bildschirmflackern" vermeiden
Set objShp = ActiveSheet.Shapes("AutoShape 1")
With objShp.TextFrame.Characters
Select Case .Text
Case "Alle-Tabellen darstellen"
Call Bilder_AT
Case "Heim-Tabelle darstellen"
Call Bilder_GT
Case "Auswärts-Tabelle darstellen"
Call Bilder_HT
Case Else
Call Bilder_Alle
End Select
End With
ErrExit:
Application.ScreenUpdating = True
Set objShp = Nothing
Shell Environ("WinDir") & "\explorer.exe /n,/e," & "D:\", vbNormalFocus
End Sub

Anzeige
AW: Zwei AutoShapes
05.08.2011 21:28:22
Uduuh
Hallo,
  With objShp
Select Case .OleFormat.Object.Text
Case "Alle-Tabellen darstellen"

Gruß aus’m Pott
Udo

AW: Zwei AutoShapes
05.08.2011 23:28:23
Sergej
Hallo Gerold, hallo Udo,
es wird immer das Makro "Bilder_AT" ausgeführt.
Gruß,
Sergej
AW: Zwei AutoShapes
06.08.2011 14:58:48
Sergej
Vielen Dank an Alle (Gerold, Udo, Luc :-?, Franz) !!!!
Es war mein Fehler :-(
Das AutoShape 2 war ganze Zeit mit "Bilder_AT" verknüpft, anstatt mit "Bilder".
Jetzt funktioniert es....
Viele Grüße,
Sergej

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige