Clever-Excel-Forum

Normale Version: Makro: blinkende Inhalt bzw. Element
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen.

Ich brauche eure Hilfe  Angel

Ich habe eine Makro wo durch ausführen der Zelleninhalt(aktive Zelle) blinken tut. Ich würde gerne diesen Code so umstellen das nicht die aktive Zelle, sondern bestimmte Element blinken tut, z.B. element mit Name: Rohr1. Ich habe zwar probiert selber Code anzupassen wie z.B. With ActiveCell  durch ActiveSheet.Shapes("Rohr1") zu ändern usw.., aber leider komm nicht zum Ergebnis da mir doch noch viele Wissen an VBA fehlen.

Ich bitte um eure Hilfe um mir zu helfen die Code anzupassen. Was ich im Private Sub Blinken() ändern soll?  Huh

Code:
Public Const giIntervall As Integer = 1
Public Const gsMacro As String = "Blinken"
Public gdNextTime As Double

Sub BlinkenEin()
   gdNextTime = Now + TimeSerial(0, 0, giIntervall)
   Application.OnTime earliesttime:=gdNextTime, _
      procedure:=gsMacro, schedule:=True
End Sub

Private Sub Blinken()
   With ActiveCell
      If .Interior.ColorIndex = 6 Then
         .Interior.ColorIndex = 9
         .Font.ColorIndex = 6
      Else
         .Interior.ColorIndex = 6
         .Font.ColorIndex = 9
      End If
   End With
   Call BlinkenEin
End Sub

Sub BlinkenEnde()
   On Error Resume Next
   Application.OnTime earliesttime:=gdNextTime, _
      procedure:=gsMacro, schedule:=False
End Sub

Ich danke euch im Voraus .

Viele Grüße
Andre
einfach austauschen, schön wärs. 

shape hat nicht die gleichen Eigenschaften wie Range

Deshalb wird interior.color nicht klappen. 

lies mal hier. https://docs.microsoft.com/de-de/office/...shape.fill
Hallo,

vielen Dank erstmal. Wie ich schon sagte, bin kein Profi - bin eher ganze am Anfang was Makros angeht, aber ich versuche mich schon reinzusteigern! 

Aus diesem Grund habe ich auch hier euch um Hilfe gebetet!

Ich hoffe, dass jemand Zeit findet mich dabei zu unterstützen!  Blush

MfG
Andre
Auch wir können nicht jede Eigenschaft eines Objektes aus dem Handgelenk schütteln.

Deshalb wäre eine Beispieldatei gut damit die Helfer ihre Codes testen können.
(04.11.2020, 21:00)ralf_b schrieb: [ -> ]Auch wir können nicht jede Eigenschaft eines Objektes aus dem Handgelenk schütteln.

Deshalb wäre eine Beispieldatei gut damit die Helfer ihre Codes testen können.

Hallo Ralf,

ich habe eine Testdatei erstellt=> mit 2 Button: Blinken-Ein und Blinken-Stop... Es wird immer die Aktive-Zelle geblinkt.. Ich habe noch eine Linie dazugefügt die "Rohr1" heißt. Jetzt möchte ich, dass die "Rohr1"-Leitung blinkt.

Hoffentlich ist jetzt bißchen mehr verständlicher  Angel

Viele Grüße
Andre
Hallo Andre

Beispiel:
Code:
Private Sub Blinken()
    If Second(Time) Mod 2 = 0 Then
        ActiveSheet.Shapes.Range(("Rohr1")).Line.ForeColor.RGB = RGB(197, 90, 17)
    Else
        ActiveSheet.Shapes.Range(("Rohr1")).Line.ForeColor.RGB = RGB(0, 176, 240)
    End If
  Call BlinkenEin
End Sub
Gruss Guschti
Hallöchen,

Zitat:Auch wir können nicht jede Eigenschaft eines Objektes aus dem Handgelenk schütteln.
Deshalb wäre eine Beispieldatei gut damit die Helfer ihre Codes testen können.

Ich glaube, eine Linie in ein Blatt einzufügen und diese in Rohr1 umzubenennen könnte auch ohne Beispieldatei klappen Smile

Für die Programmierung kann man zuweilen auch den Makrorekorder nutzen. Siehe dazu

Ich habe mal eine Linie erzeugt und rot gefärbt. Dabei ist das herausgekommen. Wenn Du Dir das anschaust, ist da einiges dabei, was auch Ralf benutzt hat. Nur ist sein Färben in einer Zeile untergebracht.

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveSheet.Shapes.Range(Array("Rohr1")).Select
    With Selection.ShapeRange.Line
      .Visible = msoTrue
      .ForeColor.RGB = RGB(255, 0, 0)
      .Transparency = 0
    End With
End Sub

Eingekürzt und nach Deinem bisherigen Prinzip könnte man es so schreiben

Code:
Sub Blinken()
If ActiveSheet.Shapes.Range(Array("Rohr1")).Line.ForeColor.RGB = RGB(0, 176, 240) Then
  ActiveSheet.Shapes.Range(Array("Rohr1")).Line.ForeColor.RGB = RGB(197, 90, 17)
Else
  ActiveSheet.Shapes.Range(Array("Rohr1")).Line.ForeColor.RGB = RGB(0, 176, 240)
End If
End Sub

und wenn Du Dich mal über With informierst und das verwendest geht es noch kürzer

Code:
Sub Blinken()
With ActiveSheet.Shapes.Range(Array("Rohr1")).Line.ForeColor
If .RGB = RGB(0, 176, 240) Then
  .RGB = RGB(197, 90, 17)
Else
  .RGB = RGB(0, 176, 240)
End If
End With
End Sub

Aber mal unabhängig davon sollte man überlegen, dass so ein Blinken schon belastend ist.
(05.11.2020, 07:37)schauan schrieb: [ -> ]...... ist da einiges dabei, was auch Ralf benutzt hat......
Soso, was hab ich denn benutzt?   Huh  

@ TE  Ich muß mich korrigieren, manche können sowas aus dem Handgelenk schütteln aber nicht ich.
... ok, war Guschti Smile Und stell Dein Licht mal nicht unter den Scheffel ... :100:
Seiten: 1 2