MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 28.10.2006, 17:31   #1
bergziege
MOF User
MOF User
Standard Excel 2007 - Makros ausführen, wenn sich der Inhalt einer Zelle ändert

Hallo zusammen,

ich möchte zwei Makros welche ich schon geschrieben habe ausführen sobald sich der Inhalt einer konkreten Zelle durch eine Berechnung geändert hat. Diese Zelle ist fix.
Leider bin ich bisher hier noch nicht fündig geworden bzw. ich weiß nicht ganz wie ich die Worksheet_Change Methode oder Worksheet_Calculate anwenden muss.
Kann mir dies bitte jemand erläutern.
Muss ich ein ganzes Makro so nennen und die anderen beiden Makros darin aufrufen? Oder wie funktioniert das.

__________________

gruss sven
bergziege ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.10.2006, 09:16   #2
jinx
MS-Office-Forum Team MS-Office-Forum Team
Standard

Moin, bergziege,

zuerst einmal sollte festgestellt werden, wie sich der Inhalt der festen Zelle ändert: durch direkte Zelleingabe (dann greift das Workshet_Change-Ereignis) oder durch Berechnung (dann sollte ggf. das Ereignis Calculate verwendet werden). Bei einer direkten Eingabe sollte hinter der Tabelle, in der sich die Zelle befindet, z.B. folgender Code eingegeben werden:

Code:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    MsgBox "Hier kommen die Makroaufrufe hin"
    Makro1
    Makro2
End If
End Sub
Die Makros befinden sich bei mir in der gleichen Mappe in einem allgemeinen Modul:

Code:

Option Explicit

Sub Makro1()
MsgBox "Dummy Code 1"
End Sub

Sub Makro2() MsgBox "Dummy Code 2" End Sub

__________________

cu
jinx


per 31.12.2010 ausgeschiedener User und ehemaliger Excel-

Folgende Tools werden zur optischen Aufbereitung eingesetzt: Code Converter; Excel Jeanie Html
Für die allgemeinen Hinweise: Netiquette; Fragen und Antworten in Foren

eingesetzte Betriebssysteme: XP Home, XP Media Center Edition, XP Professional, Vista Ultimate, 7/Seven
verwendete Programme: Excel97 SR-2, Office 2000 SP-3, Office2002/XP SP-3, Office 2003 Professional SP-3, Office 2007 Home & Student SP-3, Office 2007 Professional SP-3
jinx ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.10.2006, 13:42   #3
bergziege
Threadstarter Threadstarter
MOF User
MOF User
Standard

hallo jinx,

vilen Dank für deine Antwort. Ich habe das gerade getestet. Hat auch super funktioniert, wenn ich das Feld manuell ändere. Ich möchte jedoch, dass sich der Inhalt des Feldes errechnet. Ich habe einfach Worksheet_Change durch Worksheet_Calculate ersetzt.
Darauf bekomme ich folgende Fehlermeldung:"Fehler beim Kompilieren: Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen".

Was soll der Code leisten?
Ich bestimme in einem Feld H7 den Saldo aus der Summe von Kosten und Summe der Einnahmen. Wenn der Saldo <0 ist, soll dieses Feld ein Rot eingefärbt werden, ansonsten (Saldo >=0) grün.

Code:

Private Sub Worksheet_Calculate(ByVal Target As Range)
If Target.Address = "$H$7" Then
   ' MsgBox "Hier kommen die Makroaufrufe hin"
    'Warmeldung
    Einfaerben
End If
End Sub
Der Code für das Einfärben steht in Modul1 in einem anderen Ordner
Code:

Sub Einfaerben()

Dim Saldo As Integer
Saldo = Worksheets("Abrechnung").Cells(7, 8)

If Saldo >= 0 Then
        Cells(7, 8).Interior.Color = RGB(0, 250, 0)
Else:   Cells(7, 8).Interior.Color = RGB(250, 0, 0)
End If

End Sub
Was mache ich falsch?

__________________

gruss sven
bergziege ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.10.2006, 14:03   #4
jinx
MS-Office-Forum Team MS-Office-Forum Team
Standard

Moin, [bergziege,

den Aufruf des Ereignises so übernehmen, wie Excel ih vorsieht, nicht wie Du meinst, dass er sein sollte. Nur ein Ereignis, welches hinter der Tabelle steht und den Wert der Zelle H7 auswertet, wenn eine Neuberechnung stattfindet (dies kann bei komplexeren Berechnungen zu Verzögerungen führen):

Code:

Option Explicit

Private Sub Worksheet_Calculate()
With Range("H7")
    If .Value >= 0 Then
        .Interior.Color = RGB(0, 250, 0)
    Else
        .Interior.Color = RGB(250, 0, 0)
    End If
End With
End Sub

__________________

cu
jinx


per 31.12.2010 ausgeschiedener User und ehemaliger Excel-

Folgende Tools werden zur optischen Aufbereitung eingesetzt: Code Converter; Excel Jeanie Html
Für die allgemeinen Hinweise: Netiquette; Fragen und Antworten in Foren

eingesetzte Betriebssysteme: XP Home, XP Media Center Edition, XP Professional, Vista Ultimate, 7/Seven
verwendete Programme: Excel97 SR-2, Office 2000 SP-3, Office2002/XP SP-3, Office 2003 Professional SP-3, Office 2007 Home & Student SP-3, Office 2007 Professional SP-3
jinx ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.10.2006, 14:04   #5
R J
MOF Koryphäe
MOF Koryphäe
Standard

Hi Sven,

Code:

Private Sub Worksheet_Calculate()
    Einfaerben
End Sub
Calculate erwartet keine Parameter. Zelle H7 wertest Du ja in der Prozedur Einfärben aus...

__________________

Ciao, Ralf.

Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

R J ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.10.2006, 14:40   #6
bergziege
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi Jinx, hi Ralf,

danke euch beiden. Jetzt funktioniert es so wie es soll. Danke auch für die einfachere bzw. codesparendere Variante von Jinx.

__________________

gruss sven
bergziege ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.10.2006, 14:56   #7
fridgenep
Standard

Hallo Bergziege,

du willst Code sparen?

Code:

Option Explicit
Private Sub Worksheet_Calculate()
Range("H7").Interior.ColorIndex = IIf(Range("H7").Value >= 0, 4, 3)
End Sub
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.10.2007, 10:42   #8
mario_f
Neuer Benutzer
Neuer Benutzer
Standard

hallo leute

super forum hier, hab mich gleich mal angemeldet. ich hab ein ähnliches problem. hab auch hier schon hilfe gefunden, doch leider führt sich dieses makro oft aus (bildschirm lädt sich ca. 100 mal neu, glaube das makro führt sich so oft selber aus).

hier mein code:

rivate Sub Worksheet_Calculate()
With Range("N16")
If .Value = 1 Then
Rows("18").Hidden = True

Else
Rows("18").Hidden = False

End If
End With
End Sub

mein Ziel ist es, die Werte der Zellen zu löschen und eine Zeile auszublenden, wenn sich der WErt in der zelle n16 von 1 auf 2 ändert. Dies soll aber nur einmal ausgeführt werden, weil ich dann wieder werte reinschreiben möchte.

mfg
mario_f ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.10.2007, 11:20   #9
IngGi
MOF Guru
MOF Guru
Standard

Hallo Mario,

so sollte es funktionieren:
Code:


Private Sub Worksheet_Calculate()

Application.EnableEvents = False
On Error GoTo ErrHdl

With Range("N16")
   If .Value = 1 Then
      Rows("18").Hidden = True
   Else
      Rows("18").Hidden = False
   End If
End With

ErrHdl:
Application.EnableEvents = True

End Sub

Code eingefügt mit Syntaxhighlighter 4.3

Gruß Ingolf
IngGi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.10.2007, 18:51   #10
k.reichert
Neuer Benutzer
Neuer Benutzer
Standard

Hallo, berziege

für den von dir geschilderten einfachen Fall genügt es schon, die Bordmittel von Excel (ab 2000) der bedingten Formatierung zu nutzen:
Dort können bis zu 3 Bedingungen geprüft und abhängig davon Zellen formatiert werden, so z. B. bei Unterschreiten von 0 durch des Wert der Zelle.
Schau mal unter Menüleiste -> Format -> bedingte Formatierung.
Ist eigentlich ein recht nettes Feature und benötigt keinen Code.

Ansonsten ist das Beispiel oben ein erster Einstieg in die Event-Prozeduren unter Excel.

Gruß
Klaus
k.reichert ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.