Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

objekt an sub übergeben und eigenschaften ändern

Forumthread: objekt an sub übergeben und eigenschaften ändern

objekt an sub übergeben und eigenschaften ändern
10.08.2004 13:23:12
IngoG
Hallo zusammen,
ich habe ein problem bei der parameterübergabe in VBA.
ich möchte mit einer subroutine die schriftfarbe eines Commandbuttons in einer Tabelle auf rot setzen.
versucht habe ich dies mit:

Sub Buttonfarbe_Rot(button As Object)
button.ForeColor = RGB(0, 0, 255)
End Sub

und dem Aufruf:
Buttonfarbe_Rot (Cmbxxx)
Buttonfarbe_Rot (Cmbyyy)
leider meint er, dass die Typen unverträglich sind...
aber irgendwie sollte es doch funzen, dass ich ihm ein objekt mitgeben kann und dann in der

Sub die eigenschaften ändere
wäre schön, wenn mir jemand einen hinweis geben könnte
Gruß Ingo

		
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: objekt an sub übergeben und eigenschaften ändern
Boris
Hi Ingo,
geht sicherlich eleganter - aber so geht´s schon mal:
Option Explicit

Sub aufruf()
Call Buttonfarbe_Rot(ActiveSheet.OLEObjects(1).Name)
End Sub


Sub Buttonfarbe_Rot(button As String)
ActiveSheet.OLEObjects(button).Object.ForeColor = RGB(0, 0, 255)
End Sub

Grüße Boris
P.S.: Is aber nicht rot, sondern eher blau...
Anzeige
AW: objekt an sub übergeben und eigenschaften ändern
IngoG
Hallo Boris,
Danke erstmal für den Tip, werde es mal ausprobieren.
aber irgendwie denke ich, dass es einfacher gehen müsste.
So selten kommt das ja nicht vor, dass man das handling von objekten automatisieren muß ;-)
Gruß Ingo
PS stimmt nat. dass die Farbe blau ist, hab ich wohl mit der sub buttonfarbe_Blau verwechselt ;-)
Anzeige
AW: objekt an sub übergeben und eigenschaften ändern
10.08.2004 13:55:14
Thomas
Hallo Ingo
Versuch's mal so ...


      
Option Explicit
Private Sub CommandButton1_Click()
    
    
' UserForm
    Buttonfarbe_Rot Me.CommandButton1
    
    
' Tabelle
    Buttonfarbe_Rot Tabelle1.OLEObjects(1).Object
    
End Sub
Sub Buttonfarbe_Rot(button As MSForms.CommandButton)
    button.ForeColor = RGB(0, 0, 255)
End Sub 


Gruß
Thomas
Risi Thomas Softwareentwicklung
Anzeige
AW: objekt an sub übergeben und eigenschaften ändern
IngoG
Hallo Thomas,
zunächst einmal vielen dank für den Tip und sorry für die späte Rückmeldung.
Ich habe es auf dem beschriebenen Weg versucht, aber keine Änderung erreicht.
das Modul läuft zwar durch, aber die schriftfarbe des Buttons wird nicht verändert.
Ich werde das Problem jetzt lösen, in dem ich beim Drücken des Buttons explizit diesen Einen anspreche und die Farbe direkt in der ereignisgesteuerten Routine ändere.
Ist zwar nicht wirklich modular programmiert ;-) funzt aber...
Gruß Ingo
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Eigenschaften einer Sub in VBA: Objekte übergeben und ändern


Schritt-für-Schritt-Anleitung

Um die Schriftfarbe eines CommandButtons in Excel VBA zu ändern, kannst du eine Subroutine erstellen, die ein Objekt als Parameter übergibt. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Erstelle ein neues VBA-Modul:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  2. Definiere die Subroutine: Füge den folgenden Code in dein Modul ein:

    Sub Buttonfarbe_Rot(button As MSForms.CommandButton)
       button.ForeColor = RGB(255, 0, 0)
    End Sub
  3. Rufe die Subroutine auf: Du kannst die Subroutine von einem Ereignis, wie dem Klick auf einen Button, aufrufen. Hier ein Beispiel, wie das in einer UserForm aussehen könnte:

    Private Sub CommandButton1_Click()
       Buttonfarbe_Rot Me.CommandButton1
    End Sub
  4. Testen: Schließe den VBA-Editor und kehre zu Excel zurück. Klicke auf den Button, um die Farbe zu ändern.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Lösung: Stelle sicher, dass du das richtige Objekt übergibst. Wenn du beispielsweise ActiveSheet.OLEObjects(1).Object übergibst, muss die Subroutine den Typ Object erwarten.
  • Fehler: "Die Schriftfarbe ändert sich nicht"

    • Lösung: Überprüfe die Zuweisung der Farbe. Stelle sicher, dass du die RGB-Werte korrekt verwendest und dass die Subroutine mit dem richtigen Button aufgerufen wird.

Alternative Methoden

Wenn die direkte Übergabe von Objekten nicht funktioniert, kannst du auch den Namen des Buttons übergeben und den Button innerhalb der Subroutine identifizieren:

Sub Buttonfarbe_Rot(buttonName As String)
    ActiveSheet.OLEObjects(buttonName).Object.ForeColor = RGB(255, 0, 0)
End Sub

Aufruf:

Call Buttonfarbe_Rot("CommandButton1")

Diese Methode kann nützlich sein, wenn du mit mehreren Buttons arbeitest und die Eigenschaften einer Sub auf ein bestimmtes Objekt anwenden möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, um die Eigenschaften einer Sub in VBA zu nutzen:

  1. Ändern der Farbe mehrerer Buttons:

    Sub AlleButtonsRot()
       Dim i As Integer
       For i = 1 To ActiveSheet.OLEObjects.Count
           If TypeName(ActiveSheet.OLEObjects(i).Object) = "CommandButton" Then
               Buttonfarbe_Rot ActiveSheet.OLEObjects(i).Object
           End If
       Next i
    End Sub
  2. Farbwechsel beim Klick auf einen Button:

    Private Sub CommandButton2_Click()
       Buttonfarbe_Rot Me.CommandButton2
    End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Das erleichtert das Debuggen.
  • Nutze die Möglichkeit, mit With-Anweisungen deinen Code zu optimieren. So kannst du mehrere Eigenschaften eines Objekts in einem Block ändern.

    With Me.CommandButton1
       .ForeColor = RGB(255, 0, 0)
       .Caption = "Farbe geändert"
    End With

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Farbe eines Buttons ändern, wenn ich den Button nicht direkt ansprechen kann?
Antwort
Verwende den Namen des Buttons als String und rufe den Button über ActiveSheet.OLEObjects(buttonName).Object auf.

2. Frage
Welche Excel-Version benötige ich für die Verwendung von MSForms.CommandButton?
Antwort
Diese Funktionalität ist in Excel 2007 und neueren Versionen verfügbar, die die Verwendung von ActiveX-Steuerelementen unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige