Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro wird 2x ausgeführt
#1
Hi,

ich steuere über eine Wenn-Funktion ein Makro an (die Funktion), was mir eine Outlook-email mit Daten aus unterschiedlichen Zellen aus meiner Tabelle in das Mailfenster kopiert. Leider wird das Makro 2x ausgeführt, sodass ich zwei Mailfenster erhalte. Aktiviere ich das Makro manuell im vba-Editor, wird korrekterweise nur ein Mailfenster geöffnet. Ich weiß nicht woran das liegt, mache da schon Stunden dran rum ...  :20:

(Die <`br> sind Absätze, hab sie mit ` gekennzeichnet, damit sie hier dargestellt werden)

Gruß,
Andreas


code:


Function Tankmakro()
Application.Volatile
Tankmakro_start
End Function


Sub Tankmakro_start()
On Error Resume Next
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
strhtml = "Fahrzeug: " & ActiveCell.Offset(0, -3).Value & " <`br>"
strhtml = strhtml & "Kraftstoff : " & ActiveCell.Offset(0, -2).Value & " <`br>"
strhtml = strhtml & "Kontierung: XYZ<`br><`br>"
strhtml = strhtml & "Danke.<`br>"
.To = "Mailadresse"
.cc = "Mailadresse"
.Subject = "Tankauftrag " & ActiveCell.Offset(0, -3).Value
.htmlbody = "Bitte folgendes Fahrzeug zu 50% tanken: <`br><`br>" & strhtml
.Display
End With
Set olApp = Nothing
End Sub
Antworten Top
#2
Hallo Andeeas,

wie und wann bzw. wo wird denn die Funktion Tankmakro verwendet bzw. aufgerufen? Offensichtlich scheint sie aus deiner Tabelle doppelt verwendet zu werden!
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#3
Hallo Glausius,

das Makro wird über folgendes aufgerufen:

=WENN(UND(G2630="ja";C2630="Text");Tankmakro();"")



Besten Dank vorab
Antworten Top
#4
Hallo Andreas,

damit wird das  Makro bei jedem Eintrag in der Tabelle gestartet, denn da prüft Excel alle Formeln ab.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#5
Ich habe jetzt die Wenn-Funktion insofern geändert, dass sie eine 1 in eine andere Zelle schreibt. Das Makro prüft nun auf 1, wenn ja, dann Makro ausführen. Komischer Weise gehen immernoch 2 Outlook-Fenster auf, also 2x die Mail. Ich verstehs nicht.   :22: :22:
Antworten Top
#6
Moin!
Dann sei mal froh, dass es nur zwei sind, beim Wachsen der Datei dürftest Du den Nickname Spammer in der Firma erhalten.  :21:
Verrätst Du mir, warum Du das mittels UDF (die auch noch bewusst(!) volatil gemacht wurde) regeln willst?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
Moin Ralf,

das Volatile habe ich heute Morgen entfernt (war ein Performance-Test).

Die Tabelle ist recht simpel aufgebaut (Historie). Es gibt z.B. mehrere Einträge die diesbezüglich eine 1 zurück geben und dennoch geht das Mailfenster immer nur 2 x auf. 

Also z.B.: 

| Datum | Kunde | Fahrzeug | Kraftstoff | Tanken |  ....    | 
| 25.01.2017 |  XY | YZ |ROZ98 | ja | ..... | --------------------------> Wenn-Formel gibt 1 zurück
.
| Datum | Kunde | Fahrzeug | Kraftstoff | Tanken |  ....    | 
| 12.05.2017 |  XY | YZ |ROZ98 | ja | ..... | --------------------------> Wenn-Formel gibt 1 zurück
.
.
| Datum | Kunde | Fahrzeug | Kraftstoff | Tanken |  ....    | 
| 17.01.2018 |  XY | YZ |ROZ98 | ja | ..... | --------------------------> Wenn-Formel gibt 1 zurück
.
.
.
| Datum | Kunde | Fahrzeug | Kraftstoff | Tanken |  ....    | 
| 17.01.2018 |  XY | YZ |ROZ98 | nein | ..... | --------------------------> Wenn-Formel gibt 0 zurück


Das Makro öffnet das Mailfenster dennoch 2x selbst wenn nur 1x irgendwo ja (also 1) steht.

Undecided

Achja, das Makro wird aktiv ausgelöst, d.h. wenn der Benutzer in der aktuellen Zeile bei Tanken -ja per Dropdown auswählt.
Antworten Top
#8
(01.02.2018, 08:05)Taikido schrieb: das Makro wird aktiv ausgelöst, d.h. wenn der Benutzer in der aktuellen Zeile bei Tanken -ja per Dropdown auswählt.

Dann würde ich ein Worksheet_Change nehmen und das Target in Spalte E auf ja überwachen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#9
(01.02.2018, 08:07)RPP63 schrieb: Dann würde ich ein Worksheet_Change nehmen und das Target in Spalte E auf ja überwachen.

Gruß Ralf

Wie würde das dann aussehen? Ich habe damit noch keine Erfahrung    Huh
Antworten Top
#10
Ungetestet; ins Modul der Tabelle (.Column = 5 ist Spalte "E"):
Die UDF brauchst Du jetzt nicht mehr.

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
  If .Column = 5 And .CountLarge = 1 Then
    If .Value = "ja" Then Call Tankmakro_start
  End If
End With
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste