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

Zwei Befehle miteinander verknüpfen

Forumthread: Zwei Befehle miteinander verknüpfen

Zwei Befehle miteinander verknüpfen
04.05.2008 17:38:00
Frank
Hallo alle zusammen!
Wieder einmal bin ich ratlos, vielleicht gibt es ja auch keine Lösung, wenn doch dann verratet sie mir bitte!
Wie kann ich zwei Befehle miteinander verknüpfen: z.B. Private Sub CommandButton1_Click() & Private Sub Worksheet_Change(ByVal Target As Excel.Range).
Ich danke euch!!!
Gruß Frank H.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zwei Befehle miteinander verknüpfen
04.05.2008 17:42:00
Hajo_Zi
Hallo Frank,

Option Explicit
Private Sub CommandButton1_Click()
Worksheet_Change ActiveCell
End Sub



AW: Zwei Befehle miteinander verknüpfen
04.05.2008 17:59:34
fcs
Hallo Frank,
im Prinzip geht das.
Beispiel:

Private Sub CommandButton1_Click()
Call Worksheet_Change(Range("G3"))
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Address
Case "$F$3"
MsgBox "Ich bin Zelle F3 und habe Wert " & Target.Value
Case "$G$3"
MsgBox "Der Commanbutton ruft die Changeprozedur auf. " & Target.Value
Case Else
'do nothng
End Select
End Sub


Aber wirklich Sinn macht das eigentlich selten. Was willst du denn mit der Verknüpfung bezwecken?
Gruß
Franz

Anzeige
AW: Zwei Befehle miteinander verknüpfen
05.05.2008 19:55:18
Frank
Hallo Franz!
Besten Dank, ging nicht eher! Beim Anklicken des Button werten Werte in Zellen eingetragen mittels vorher zusammengebauter UserForm und mittels des zweiten Befehls wird dann bedingt formatiert, da mehr als 3 Bedingungen mittels VBA!!!
Gruß Frank!!!

AW: Zwei Befehle miteinander verknüpfen
06.05.2008 11:46:00
fcs
Hallo Frank,
eine Worksheet_Change Prozedur wird normaler weise auch dann ausgeführt, wenn man per Makro Zellen Werte zuweist. Ausnahme: die Ereignismakros wurden per Application.EnableEvents = False deaktiviert.
Wenn die Worksheet_Change Prozedur korrekt eingerichtet ist, dann brauchst du also nichts weiter zu machen.
Wenn man es geschickt macht, dann kann man die vom UF aus geänderten Zellen, direkt bedingt formatieren. Dazu schreibst du deine Prozedur für die bedingte Formatierung in eine Sub mit dem Bereich als Parameter.
Hier eine kleine Beispiel-Datei.
https://www.herber.de/bbs/user/52143.xls
Gruß
Franz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwei Befehle in Excel miteinander verknüpfen


Schritt-für-Schritt-Anleitung

Um zwei Excel-Befehle miteinander zu verknüpfen, kannst Du die folgenden Schritte befolgen. Diese Anleitung geht davon aus, dass Du mit Excel Visual Basic arbeitest:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge einen CommandButton hinzu: Erstelle eine UserForm oder füge einen Button in ein Arbeitsblatt ein.

  3. Erstelle die Subroutine für den Button: Füge den folgenden Code in das CommandButton1_Click-Ereignis ein:

    Private Sub CommandButton1_Click()
       Call Worksheet_Change(Range("G3"))
    End Sub
  4. Definiere die Worksheet_Change-Prozedur: Füge den folgenden Code ein, um die Worksheet_Change-Ereignisse zu verarbeiten:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       Select Case Target.Address
       Case "$F$3"
           MsgBox "Ich bin Zelle F3 und habe Wert " & Target.Value
       Case "$G$3"
           MsgBox "Der CommandButton ruft die Changeprozedur auf: " & Target.Value
       Case Else
           'do nothing
       End Select
    End Sub
  5. Teste die Funktionalität: Klicke auf den Button und prüfe, ob die erwarteten Nachrichtenboxen erscheinen.


Häufige Fehler und Lösungen

  • Ereignismakros nicht aktiviert: Wenn die Worksheet_Change-Prozedur nicht ausgelöst wird, prüfe, ob Application.EnableEvents auf False gesetzt ist. Setze es auf True, um die Ereignisse zu aktivieren.

  • Falsche Zellreferenzen: Stelle sicher, dass die angegebene Zellreferenz im Select Case-Block korrekt ist. Ein Tippfehler kann dazu führen, dass kein Code ausgeführt wird.


Alternative Methoden

Anstelle des CommandButton kannst Du auch andere Steuerelemente verwenden, z.B. Dropdown-Listen oder Checkboxen, um bestimmte Aktionen auszulösen. Mit VBA kannst Du auch die Worksheet_Change-Prozedur direkt mit den entsprechenden Steuerelementen verknüpfen.


Praktische Beispiele

  1. Bedingte Formatierung: Du kannst die Worksheet_Change-Prozedur nutzen, um Zellen basierend auf bestimmten Bedingungen automatisch zu formatieren.

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       If Not Intersect(Target, Range("G3")) Is Nothing Then
           If Target.Value > 10 Then
               Target.Interior.Color = RGB(255, 0, 0) ' Rot
           Else
               Target.Interior.Color = RGB(0, 255, 0) ' Grün
           End If
       End If
    End Sub
  2. Datenvalidierung: Du kannst diese Technik auch verwenden, um Eingaben in Zellen zu validieren und Benutzerbenachrichtigungen anzuzeigen.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was hilft, Fehler zu vermeiden.
  • Modularisiere Deinen Code: Halte Deine Subroutinen klein und spezifisch, um die Lesbarkeit und Wartbarkeit zu verbessern.
  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um Probleme schnell zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Worksheet_Change-Prozedur immer funktioniert?
Achte darauf, dass Application.EnableEvents nicht deaktiviert ist, und überprüfe die Zellreferenzen in Deinem Code.

2. Kann ich mehrere Buttons mit der gleichen Worksheet_Change-Prozedur verknüpfen?
Ja, Du kannst mehrere Buttons auf die gleiche Weise verknüpfen, indem Du die Call-Anweisung in den entsprechenden Subroutinen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige