Thema Datum  Von Nutzer Rating
Antwort
06.04.2017 07:24:11 Stephan
NotSolved
06.04.2017 15:22:26 BigBen
NotSolved
06.04.2017 16:39:51 Stephan
NotSolved
07.04.2017 15:44:53 BigBen
NotSolved
08.04.2017 22:12:57 Stephan
NotSolved
09.04.2017 09:10:12 BigBen
NotSolved
09.04.2017 09:13:36 BigBen
NotSolved
09.04.2017 09:24:49 BigBen
NotSolved
09.04.2017 10:18:55 Gast18830
NotSolved
09.04.2017 10:29:16 BigBen
NotSolved
Rot Selection.ShapeRange(2).Delete: unterschiedlich in PPT 2013 und 365
09.04.2017 21:42:03 Stephan
NotSolved

Ansicht des Beitrags:
Von:
Stephan
Datum:
09.04.2017 21:42:03
Views:
557
Rating: Antwort:
  Ja
Thema:
Selection.ShapeRange(2).Delete: unterschiedlich in PPT 2013 und 365

Hallo BibBen,

 

leider hat deine Lösung nicht funktioniert. In Office 2016 wirft das rng.Select einen Fehler wirft, da die zuvor gelöschte Shape zwar noch von rng referenziert wird, jedoch nicht mehr vorhanden ist.

 

Ich habe jetzt allerdings eine funktionierende Version:

Sub DeleteLastSelectedShape()
    Dim iShCnt As Integer
    Dim rng As ShapeRange
    
    Select Case Application.Version
        Case "16.0"
            Set rng = ActiveWindow.Selection.ShapeRange
            iShCnt = rng.Count
            If iShCnt > 0 Then
                Dim selIDs() As Integer
                ReDim selIDs(iShCnt)
                
                For ii = 1 To iShCnt
                    selIDs(ii) = ActiveWindow.Selection.ShapeRange(ii).Id
                Next ii
                
                'folgender Aufruf sorgt in Office 2016 dafür, dass nichts mehr ausgewählt wird
                ActiveWindow.Selection.ShapeRange(iShCnt).Delete 'zuletzt markiertes Element löschen
                
                'alle Elemente der Seite durchlaufen und prüfen, ob sie vorher ausgewählt waren
                'falls ja, wird das Element ausgewählt per .Select
                For ii = 1 To iShCnt - 1
                    For jj = 1 To ActiveSlide.Shapes.Range.Count
                        If ActiveSlide.Shapes.Range(jj).Id = selIDs(ii) Then
                            ActiveSlide.Shapes.Range(jj).Select (msoFalse)
                        End If
                    Next jj
                Next ii
                
            End If
        Case Else
            iShCnt = ActiveWindow.Selection.ShapeRange.Count
            If iShCnt > 0 Then
                ActiveWindow.Selection.ShapeRange(iShCnt).Delete
            End If
    End Select
End Sub


Function ActiveSlide() As Slide
'liefert eine Referenz auf die aktuelle Folie
'http://www.vbarchiv.net/tipps/tipp_993-aktive-folie-in-powerpoint-ermitteln.html

  On Error GoTo ErrHandler
  Set ActiveSlide = ActivePresentation.Slides( _
    ActiveWindow.View.Slide.Name)
  Exit Function
 
ErrHandler:
  Set ActiveSlide = Nothing
End Function

 

Ist zwar etwas komplizierter als erwartet, aber es funktioniert.

 

Danke für deine Hilfe

 Stephan


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.04.2017 07:24:11 Stephan
NotSolved
06.04.2017 15:22:26 BigBen
NotSolved
06.04.2017 16:39:51 Stephan
NotSolved
07.04.2017 15:44:53 BigBen
NotSolved
08.04.2017 22:12:57 Stephan
NotSolved
09.04.2017 09:10:12 BigBen
NotSolved
09.04.2017 09:13:36 BigBen
NotSolved
09.04.2017 09:24:49 BigBen
NotSolved
09.04.2017 10:18:55 Gast18830
NotSolved
09.04.2017 10:29:16 BigBen
NotSolved
Rot Selection.ShapeRange(2).Delete: unterschiedlich in PPT 2013 und 365
09.04.2017 21:42:03 Stephan
NotSolved