Moin zusammen,
Autoformen, z.B. einem Pfeil, kann man per „Autoform formatieren“
eine Füllfarbe zuweisen.
Kann man diese Füllfarbe per VBA ändern?
Ich möchte einem Symbol (Pfeil, Kreis, Rechteck oder ähnlich), welches ich neben einer Schaltfläche plaziere, die ein Makro ausführt, die Farbe „grün“ zuweisen, wenn das Makro durchlaufen ist.
Oder kann man gar die Farbe der Schaltfläche selbst per VBA ändern?
Gruß und danke
Rolf
Ich möchte einem Symbol (Pfeil, Kreis, Rechteck oder ähnlich),
welches ich neben einer Schaltfläche plaziere, die ein Makro
ausführt, die Farbe „grün“ zuweisen, wenn das Makro
durchlaufen ist.
Oder kann man gar die Farbe der Schaltfläche selbst per VBA
ändern?
Hi Rolf,
woher stammt die Schaltfläche, Symbolleiste Formular, Steuerelementtoolbox, selbstgebastelte ocx?
Gruß
Reinhard
Hallo Reinhard,
die Schaltfläche ist aus der Symbolleiste Formular,
Gruß
Rolf
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
woher stammt die Schaltfläche, Symbolleiste Formular,
Steuerelementtoolbox, selbstgebastelte ocx?
die Schaltfläche ist aus der Symbolleiste Formular,
Hallo Rolf,
nimm doch eine aus der Steuerelementtollbox, dann im Codemodul des Tabellenblattes dann z.B. so:
Option Explicit
'
Private Sub CommandButton1\_Click()
Static F As Boolean
F = Not F
If F Then
CommandButton1.BackColor = RGB(255, 0, 0)
Else
CommandButton1.BackColor = RGB(0, 0, 255)
End If
End Sub
Gruß
Reinhard
Moin Reinhard,
vielen herzlichen Dank, genau sowas hab ich gemeint.
Ich habe die Farben noch etwas umgehäkelt und jetzt passt das.
Danke und frohes Schaffen heute.
Gruß
Rolf
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Reinhard,
wenn ich meinen vorhandenen Code dazusetze, meckert er:
„Laufzeitfehler 1004“: Die Activate-Methode des Range-Objektes
konnte nicht ausgeführt werden und markiert „Range(„A1“).Activate“
Kannst Du nochmal helfen?
Private Sub CommandButton1\_Click()
' Makro blendet alle Zeilen mit 0 aus
Application.ScreenUpdating = False
Sheets("Tabelle1").Activate
Range("A1").Activate
For Each rngCell In Range("A1:A53")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Application.ScreenUpdating = true
Static F As Boolean
F = Not F
If F Then
CommandButton1.BackColor = RGB(51, 153, 102)
End If
End Sub
nimm doch eine aus der Steuerelementtollbox, dann im Codemodul
des Tabellenblattes dann z.B. so:
Option Explicit
’
Private Sub CommandButton1_Click()
Static F As Boolean
F = Not F
If F Then
CommandButton1.BackColor = RGB(255, 0, 0)
Else
CommandButton1.BackColor = RGB(0, 0, 255)
End If
End Sub
wenn ich meinen vorhandenen Code dazusetze, meckert er:
„Laufzeitfehler 1004“: Die Activate-Methode des Range-Objektes
konnte nicht ausgeführt werden und markiert
„Range(„A1“).Activate“
Hallo Rolf,
bei mir kommt kein Fehler.
Probiers mal so:
Option Explicit
'
Private Sub CommandButton1\_Click()
' Makro blendet alle Zeilen mit 0 aus
Dim lngZei As Long
Static F As Boolean
On Error GoTo Fehler
Application.ScreenUpdating = False
Range("A54").Select
For lngZei = 53 To 1 Step -1
If Cells(lngZei, 1) = 0 Then
Cells(lngZei, 1).EntireRow.Hidden = True
Else
Cells(lngZei, 1).Select
End If
Next lngZei
CommandButton1.Top = ActiveCell.Top
F = Not F
If F Then CommandButton1.BackColor = RGB(51, 153, 102)
Fehler:
Application.ScreenUpdating = True
If Err.Number 0 Then MsgBox "Fehler trat auf in Zeile " & lngZei
End Sub
Gruß
Reinhard
Hallo Reinhard,
ja, das funktioniert. Jetzt blendet er mir die Zeilen im
aktiven Blatt aus, soll er aber nicht.
Das von mir beschriebene
Sheets(„Tabelle1“).Activate
Range(„A1“).Activate
stand nur beispielhaft für
Sheets("Tabelle2").Activate
Range("A1").Activate
For Each rngCell In Range("A1:A896")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Sheets("Tabelle3").Activate
Range("A1").Activate
For Each rngCell In Range("A1:A896")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Sheets("Tabelle4").Activate
Range("A1").Activate
For Each rngCell In Range("A1:A896")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Sheets("Tabelle11").Activate
Range("A1").Activate
For Each rngCell In Range("A1:A896")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Sheets("Tabelle34").Activate
Range("A1").Activate
For Each rngCell In Range("A1:A896")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Wenn das mit dem Färben der Schaltfläche nicht klappt, nehme
ich auch gern was anderes, das ich neben der Schaltfläche plaziere,
was sich eben grün färbt, wenn die Schaltfläche gedrückt wurde.
Ich hoffe, jetzt wird’s nicht zu kompliziert.
Gruß
Rolf
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
wenn ich meinen vorhandenen Code dazusetze, meckert er:
„Laufzeitfehler 1004“: Die Activate-Methode des Range-Objektes
konnte nicht ausgeführt werden und markiert
„Range(„A1“).Activate“
Hallo Rolf,
bei mir kommt kein Fehler.
Probiers mal so:
Option Explicit
’
Private Sub CommandButton1_Click()
’ Makro blendet alle Zeilen mit 0 aus
Dim lngZei As Long
Static F As Boolean
On Error GoTo Fehler
Application.ScreenUpdating = False
Range(„A54“).Select
For lngZei = 53 To 1 Step -1
If Cells(lngZei, 1) = 0 Then
Cells(lngZei, 1).EntireRow.Hidden = True
Else
Cells(lngZei, 1).Select
End If
Next lngZei
CommandButton1.Top = ActiveCell.Top
F = Not F
If F Then CommandButton1.BackColor = RGB(51, 153, 102)
Fehler:
Application.ScreenUpdating = True
If Err.Number 0 Then MsgBox "Fehler trat auf in Zeile
" & lngZei
End Sub
Gruß
Reinhard
Hallo Reinhard,
ja, das funktioniert. Jetzt blendet er mir die Zeilen im
aktiven Blatt aus, soll er aber nicht.
Das von mir beschriebene
Sheets(„Tabelle1“).Activate
Range(„A1“).Activate
laß den Kram doch weg, braucht man nicht. Maximal, wenn überhaupt am Ende des Codes um eine bestimmte Zelle zu markieren.
Option Explicit
'
Private Sub CommandButton1\_Click()
' Makro blendet alle Zeilen mit 0 aus
Dim rngCell As Range, arrTab, T As Integer
Static F As Boolean
arrTab = Array("Tabelle3", "Tabelle2", "Tabelle1")
On Error GoTo Fehler
Application.ScreenUpdating = False
For T = 0 To UBound(arrTab)
For Each rngCell In Sheets(arrTab(T)).Range("A1:A896")
If rngCell.Value = 0 Then rngCell.EntireRow.Hidden = True
Next rngCell
Next T
F = Not F
If F Then CommandButton1.BackColor = RGB(51, 153, 102)
Call test
Fehler:
Application.ScreenUpdating = True
If Err.Number 0 Then MsgBox "Fehler trat auf"
End Sub
und in einem Modul:
Sub test()
Worksheets(„Tabelle2“).Activate
Range(„c3“).Select
End Sub
Natürlich wäre es günstig wenn Zeile 3 nicht ausgeblendet ist 
Wenn das mit dem Färben der Schaltfläche nicht klappt, nehme
ich auch gern was anderes, das ich neben der Schaltfläche
plaziere,
was sich eben grün färbt, wenn die Schaltfläche gedrückt
wurde.
Das Färben klappt doch. nach dem ersten Klicken auf den Button wird er bunt und bleibt das auch bei den nächsten Klicks, da du den Else-If Zweig entfernt hast. Also soll das anscheinend so sein.
Gruß
Reinhard
Hallo Reinhard,
das ist natürlich kürzer - und funktioniert auch noch
)
Vielen Dank für Deine Mühe. Du hast mir mal wieder sehr geholfen.
Gruß
Rolf
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]