Thema Datum  Von Nutzer Rating
Antwort
02.03.2024 00:13:15 Max
Solved
Blau VBA Powerpoint: Austausch einer Farbe in ganzer Präsentation
02.03.2024 01:29:24 Gast90285
*****
Solved
02.03.2024 07:34:53 Gast60354
Solved

Ansicht des Beitrags:
Von:
Gast90285
Datum:
02.03.2024 01:29:24
Views:
427
Rating: Antwort:
 Nein
Thema:
VBA Powerpoint: Austausch einer Farbe in ganzer Präsentation

Das liegt wohl daran, dass du oshpR(1) setzt, statt das ausgewählte Objekt zu setzen.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Sub FarbeErsetzen()
 
Dim sld As Slide
 
Dim oshp As Shape
 
Dim oshpR As ShapeRange
 
 
Dim lngCol_Alt As Long
Dim iR_Alt As Integer
Dim iG_Alt As Integer
Dim iB_Alt As Integer
 
Dim lngCol_Neu As Long
Dim iR_Neu As Integer
Dim iG_Neu As Integer
Dim iB_Neu As Integer
 
 
On Error GoTo ErrorHandler ' Error Handling
 
 
If ActiveWindow.Selection.ShapeRange.Count <> 1 Then 'Abbruch, falls mehr als ein Objekt ausgewählt ist
     
    MsgBox "Es muss ein Objekt ausgewählt sein.", vbCritical
     
    Exit Sub
     
ElseIf ActiveWindow.Selection.Type <> ppSelectionShapes Then 'Abbruch, falls keine Autoform ausgewählt ist
 
    MsgBox "Es muss ein Objekt ausgewählt sein.", vbCritical
 
    Exit Sub
 
Else
 
   Set oshpR = ActiveWindow.Selection.ShapeRange
    
    
    lngCol_Alt = oshpR.Fill.ForeColor.RGB 'Erfassung der Farbe, die ersetzt werden soll
     
    iR_Alt = lngCol_Alt Mod 256
    iG_Alt = (lngCol_Alt \ 256) Mod 256
    iB_Alt = (lngCol_Alt \ 256 \ 256) Mod 256
    
   ActiveWindow.Selection.Unselect
   Debug.Print sh
    
    Do While ActiveWindow.Selection.Type <> ppSelectionShapes
        DoEvents
         
    Loop
     
    With ActiveWindow.Selection
                If .Type = ppSelectionShapes Then
                                      
                    Set oshpR = ActiveWindow.Selection.ShapeRange
                        lngCol_Neu = oshpR.Fill.ForeColor.RGB 'Erfassung der Farbe, die die alte Farbe ersetzen soll
     
                        iR_Neu = lngCol_Neu Mod 256
                        iG_Neu = (lngCol_Neu \ 256) Mod 256
                        iB_Neu = (lngCol_Neu \ 256 \ 256) Mod 256
                     
                     
                End If
    End With
    
   ActiveWindow.Selection.Unselect
    
   For Each sld In ActivePresentation.Slides '.Range
    
        For Each oshp In sld.Shapes 'Iteration durch alle Objekte für Abgleich
            With oshp
                            If .Fill.ForeColor.RGB = RGB(iR_Alt, iG_Alt, iB_Alt) Then
'                            .Select
                .Fill.ForeColor.RGB = RGB(iR_Neu, iG_Neu, iB_Neu) 'Falls Objekt mit zu ersetzender Farbe: alte Farbe mit neuer Farbe ersetzen
                
                End If
            End With
     
        Next oshp
   Next sld
     
End If
 
Exit Sub 'Wichtig, da sonst Error Handling-Code ausgeführt wird, obwohl kein Fehler vorliegt
ErrorHandler:
 MsgBox "Es muss ein Objekt ausgewählt sein.", vbCritical
 'Resume Next
End Sub

 


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
02.03.2024 00:13:15 Max
Solved
Blau VBA Powerpoint: Austausch einer Farbe in ganzer Präsentation
02.03.2024 01:29:24 Gast90285
*****
Solved
02.03.2024 07:34:53 Gast60354
Solved