Office - Word, Excel und Co. 9.751 Themen, 41.573 Beiträge

Excel Makros anders starten

Uwe Westhagen / 8 Antworten / Baumansicht Nickles

Gibt es irgend eine Möglichkeit ein Makro anders zu starten. Es ist ja nur der Weg über Makro ausführen direkt unter Makros bekannt, bzw. die Verknüpfung über einen Schalter. Ich denke aber dabei an eine völlig andere Möglichkeit der Aktivierung eines Makros z.B. durch Eingabe eines bestimmten Wertes in eine Zelle, der dann über eine Funktion wie z.B. "wenn" ein Makro automatisch starten kann.
Ich vermute meinerseits dass dies eher ein Wunschtraum von mir ist oder gibt es da doch einen Weg? Ich wäre wirklich happy

Vielen Dank und Gruß
Uwe

bei Antwort benachrichtigen
Sovereign Sylvia Uwe Westhagen „Excel Makros anders starten“
Optionen

Hi Uwe,

zunächst müsste mal untersucht werden, wie eine bestimmte Zelle dauerhaft überwacht werden kann, um Änderungen in der Zelle zu erfassen. Ich wurde durch dein Posting neugierig und habe mich nach Jahren mal wieder mit VBA und dem Visual Basic Editor bzw. Makro-Editor beschäftigt. Und siehe da: Es gibt einen Weg.
Der Weg ist das Ausnutzen von Events (Ereignisse) (ich weisz jetzt nicht, wieviel VBA-Kenntnisse und welche Excel Version du hast; ich benutze Excel 2000). Alle Objekte innerhalb eines Excel-Workbooks (*.XLS) haben solche Events, die bei bestimmten Bedingungen, dann aber immer automatisch ausgeführt werden. Eines dieser Objekte ist das Worksheet, also das Blatt mit den Zellen.
Wählt man im Makro-Editor ein Sheet aus, befindet sich am oberen Rand des Teils, in dem Code geschrieben wird, eine Klappliste mit den Objekten und eine Klappliste mit den Events, die für das gewählte Objekt zur Verfügung stehen. Bei Worksheets ist das z.B. das Change-Event mit der Kopfzeile "Private Sub Worksheet_Change(ByVal Target As Range)". Dieses Event wird bei allen
Änderungen in Zellen auf dem Worksheet ausgelöst. Jetzt musst du nur noch die Bedingung programmieren und sagen, was bei deren Erfüllung passieren soll.

Ein einfaches Beispiel wäre:
################################################
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Row = 5 Then
MsgBox Target.Text 'Ausgabe des Zellenwertes in einer MessageBox
End If
End Sub
################################################
Hier werden manuelle Änderungen des Inhaltes in Zelle "B5" abgefragt. Manuelle Änderungen in einer Zelle werden erst nach Betätigen der Enter-Taste erfasst; hier sind Zelleninhalt und angezeigter Inhalt identisch.

Hast du in der Zelle aber eine Formel, so sind Zelleninhalt (Formel) und angezeigter Wert (Formelergebnis) nicht mehr identisch, und eine Veränderung des Formelergebnisses löst kein Change-Event aus. Hier musst du das "Calculate"-Event benutzen, um die (sichtbaren) Veränderungen des Ergebnisses zu erfassen:
##############################
Private Sub Worksheet_Calculate()
MsgBox Me.Cells(5, 2)
End Sub
##############################

Die Programmiersprache in VBA ist english, egal welche Sprachfassung das installierte Excel hat.

Hat das als kleiner Einstieg geholfen?

HAND :-)
Sylvia

Mein sz streikt heute wieder ------ Nobody is perfect, and we prove it every day.
bei Antwort benachrichtigen
Uwe Westhagen Sovereign Sylvia „Hi Uwe, zunächst müsste mal untersucht werden, wie eine bestimmte Zelle...“
Optionen

Hallo Sylvia,
vielen lieben Dank, bin im Moment damit überfordert, da ich sehr lange Zeit nicht mehr mit VB gearbeitet habe. Werde Deine Beschreibung ausdrucken und mich nochmals in Ruhe damit beschäftigen. Ich habe Excel 2000.
Im Moment wie gesagt vielen Dank für die Mühe mit Deiner ausführlichen Beschreibung

Uwe

bei Antwort benachrichtigen
peterson Uwe Westhagen „Excel Makros anders starten“
Optionen

Du kannst Makros laufen lassen, wenn Du Excel startest, wenn Du Excel beendest.
Man kann Makros starten, wenn man Zellen verläßt mit Return oder Pfeiltasten.

Allerdings erfordert es schon einige Grundkenntnisse.

bei Antwort benachrichtigen
Uwe Westhagen peterson „Du kannst Makros laufen lassen, wenn Du Excel startest, wenn Du Excel beendest....“
Optionen

Hallo Peterson,

vielen Dank, ich vermute Du meinst in etwa das gleiche wie Sylvia, ist mir momentan aber zu hoch, das muß ich ehrlich zugeben. Aber dass es einen Weg gibt freut mich im Moment schon mal, selbst wenn ich es derzeit noch nicht einsetzen kann.

So long Uwe

bei Antwort benachrichtigen
peterson Uwe Westhagen „Hallo Peterson, vielen Dank, ich vermute Du meinst in etwa das gleiche wie...“
Optionen

Ich habe mir mal vor Jahren ein billiges Buch bei ebay geakuft.

"Jetzt lerne ich VBA mit Excel".

Da steht sowas drin.

Befehle für automatische Makros sind:

Auto_Active
Auto_Close
Auto_Deactive
Auto_Open

Der Name sagt schon, wann das Marko startet.

bei Antwort benachrichtigen
Sovereign Sylvia peterson „Ich habe mir mal vor Jahren ein billiges Buch bei ebay geakuft. Jetzt lerne ich...“
Optionen

@Petersen,
deine 4 Auto_-Makros: Mit welchen Ereignissen sollen die denn verknüpft werden, damit sie gestartet werden? Das sind meiner Erinnerung nach Makros, die beim Öffnen bzw. Schlieszen von Workbooks und dann auch nur einmalig pro Workbook-Session getriggert werden.
Entweder habe ich da jetzt was durcheinander bekommen, oder du solltest vielleicht noch mal das Eröffnungsposting genauer lesen; dort steht u.a. "Ich denke aber dabei an eine völlig andere Möglichkeit der Aktivierung eines Makros z.B. durch Eingabe eines bestimmten Wertes in eine Zelle ...".

HAND :-)
Sylvia

Mein sz streikt heute wieder ------ Nobody is perfect, and we prove it every day.
bei Antwort benachrichtigen
peterson Sovereign Sylvia „@Petersen, deine 4 Auto_-Makros: Mit welchen Ereignissen sollen die denn...“
Optionen

Open und close werden ausgeführt, wenn Du in Excel ein Arbeitsblatt öffnet oder schließt.
Ich benutze zum Beispiel auto_close, um beim Schließen immer ein bestimmtes Arbeitsblatt vor dem Schließen aktiv zu machen.

Sub Auto_Close()
Sheets("Verkauf").Select
End Sub

Active und Deactive arbeiten auf Zellfunktionen.

Hier ein Beispiel, wie ich nach einer Eingabe eine Tabelle neu berechne.
In Tabelle 1 gebe ich Werte ein, in Tabelle 2 (Hilfstabelle) berechne ich diese.
Die Ergebnisse werden dann wieder in Tabelle 1 gebraucht.

Private Sub Workbook_Open()
Sheets(1).OnEntry = "DieseArbeitsmappe.NeuBerechnen"
End Sub
-----------------------------------------------------------------------------------------
Sub NeuBerechnen()
zeile = ActiveCell.Row
spalte = ActiveCell.Column

Was ich hier berechne, ist nicht relevant.

End Sub

bei Antwort benachrichtigen
Uwe Westhagen peterson „Open und close werden ausgeführt, wenn Du in Excel ein Arbeitsblatt öffnet...“
Optionen

Hallo Peterson,


danke für das Beispiel, werde ich später mal praktisch nachprobieren. Im Moment läuft mir die Zeit davon, ausgerechnet jetzt ist was dazwischen gekommen.
Also vielen Dank und Grüße


Uwe

bei Antwort benachrichtigen