Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1240to1244
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Ausführung während Zellbearbeitung

VBA-Ausführung während Zellbearbeitung
Micha
Hallo,
seit Excel2010 ist es (leider) möglich, während der Zellbearbeitung vorhandene Buttons mit VBA-Code zu klicken. Das Problem dabei ist, dass das jeweilige Tabellenblatt ein "Worksheet_Change"-Makro hinterlegt hat, welches beim Klicken des Buttons (=Zelle verlassen) nicht ausgeführt wird, weil der Button-Code vorrangig bearbeitet wird.
Ich suche eine Lösung für ggf. folgende Möglichkeiten:
- Buttonklick während Zellbearbeitung/-eingabe verhindern (war in Excel2003 gar nicht möglich!)
- Worksheet_Change-Makro sicher vor Button-Makro ausführen
- Worksheet_Change-Makro aus Button-Makro anfangs aufrufen (hab ich bisher nicht geschafft, wg. ständigen "Target"-Übergabeproblemen).
Kann jemand helfen? Besten Dank im Voraus!
Grüße, Micha H.

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

Betreff
Benutzer
Anzeige
AW: VBA-Ausführung während Zellbearbeitung
05.12.2011 09:27:24
ransi
HAllo Micha
ICh kann das nicht nachvollziehen.
Die MAkros werden so abgearbeitet wie sie aufgferufen bzw. ausgelöst werden.
Option Explicit

Private Sub CommandButton1_Click()
    Range("A1").Value = "Test"
    MsgBox "CommandButton1_Click ausgeführt"
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "Worksheet_Change ausgeführt"
End Sub


Range("A1") wird eingetragen
DAs Worksheetchange wird ausgelöst und abgearbeitet.
Rücksprung in die Click Prozedur und die weiter abarbeiten.
ransi
Anzeige
AW: VBA-Ausführung während Zellbearbeitung
05.12.2011 09:49:54
Jürgen
Hallo Micha, hallo ransi,
das beschriebene Problem tritt auf, wenn man die Schaltfläche aus dem Satz der Formularsteuerelemente verwendet, nicht jedoch bei der aus dem Satz der ActiveX-Steuerlemente. Ein Lösungsansatz wäre also die Verwendung der ActiveX-Steuerelemente, oder, wenn man dies nicht möchte, die Einrichtung von Pseudo-Schaltflächen, indem man Zellen optisch wie Schaltflächen formatiert und über das SelectionChange-Event (und / oder Click- und DoubleClick-Event) dafür sorgt, dass das Anklicken der Zellen den Aufruf des Makros auslöst.
Gruß, Jürgen
AW: VBA-Ausführung während Zellbearbeitung
05.12.2011 17:59:49
Micha
Hallo Jürgen und Ransi,
danke für Eure schnelle und kompetente Antwort. Kurzes Feedback für Euch:
Ihr habt beide recht, mit ActiveX-Buttons wird zuerst das Worksheet_Change-Makro ausgeführt, mit normalen Steuerelementen nicht. Es gibt aber eine Besonderheit, wo wohl in Excel2010 ein kleines "Feature" eingebaut ist. Die von mir bearbeitete Datei war ursprünglich eine 2003er-Exceldatei mit Endung xls. Erstelle ich in dieser Datei in Excel2010 ein neues Tabellenblatt (immer noch Endung xls), verhalten sich die Buttons so wie zuvor von Euch beschrieben. Bei mir in dem 2003er-Blatt verhält sich auch ein neu hinzugefügter ActiveX-Button so, dass das Worksheet_Change-Makro nicht ausgeführt wird.
Danke für Eure schnelle Hilfe!
Zwei Fragen hätte ich noch zur endgültigen Problemlösung: wie kann ich dem ActiveX-Steuerelement "Bild" ein PNG-Bild (wg. der transparenten Farbe / Clipart) hinterlegen (Excel erlaubt nur bmp, dip, jpg, gif, wmf, emf, ico, cur)? Alternativ, wie kann ich bei Klick eines normalen Steuerelements oder eben eines Bilds mit zugewiesenen Makro zwingend das Worksheet_Change-Makro vorab "befehlen" (ich hab hier div. Target-Übergabe-Probleme...)?
Grüße, Micha H.
Anzeige
Call Tabelle1.Worksheet_Change(ActiveCell)
07.12.2011 11:31:16
ransi
HAllo
Ich weiß zwar immer noch nicht was genau du vorhast, aber eine Ereignissprozedur kannt du so aufrufen:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Public Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "Worksheet_Change ausgelöst"
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Bild1_BeiKlick()
    Call Tabelle1.Worksheet_Change(ActiveCell)
    MsgBox "Bild1_BeiKlick abgearbeitet"
End Sub


ransi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige