Clever-Excel-Forum

Normale Version: Makro wird 2x ausgeführt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Danke schonmal soweit :)

So sieht es momentan aus. 

Es funktioniert nur, wenn ich das Makro im vba-Editor starte. Dazu muss ich den Mauszeiger aber im Makrotext haben, ansonsten bringt er mir das Popup-Fenster wonach ich den Makronamen zum Ausführen wählen soll.
(If .Column = 7 weil 7 = Spalte mit "ja" / "nein"):

Noch eine Frage: Wie bekomme ich es hin, dass in Spalte C ein bestimmter Wert zusätzlich stehen muss, damit das Makro ausgelöst wird? Also Check Spalte C auf X und Spalte G auf Y dann löse Makro aus.



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


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
Ein Ereignismakrio gehört ins Modul der aufrufenden Klasse.
In diesem Fall ins Modul der entsprechenden Tabelle.
Lies Dir dies mal durch:
http://www.online-excel.de/excel/singsel_vba.php?f=44

Gruß Ralf (der jetzt bis heute Abend offline ist)
Guten Morgen Ralf,

ich habe den Code jetzt aus dem Modul im vba-Editor kopiert, meine Tabelle per Doppelklick aktiviert und im leeren Codefenster der Tabelle den Code eingefügt. Leider funktioniert es nicht. Wenn ich den Code manuell starte, klappt es. Ich habe auch schon probiert, den Worksheet_Change nur in die Tabelle und das Tankmakro_start () nur in das Modul zu kopieren (und umgekehrt) es löst trotzdem nicht aus.



Ich habe den Code gemäß dieser Anleitung reinkopiert:

Wie fügt man ein Makro in das Codefenster der Tabelle ein?
  • während Excel aktiv ist, ist die Tastenkombination Alt + F11 zu drücken, damit öffnet sich das Fenster der Entwicklungsumgebung für VBA

  • mit Tastenkombination Strg + R den Projektexplorer öffnen und aktivieren

  • dort die gewünschte Datei per Doppelklick markieren, sie ist dann blau unterlegt

  • nun Doppelklick unterhalb dieser Datei auf das gewünschte Tabellenblatt, auf welches sich das Makro auswirken soll

  • nun ist in der rechten Fensterhälfte das Codefenster dieser Tabelle sichtbar. In diese kann der Code eingefügt werden

  • speichern und Visual Basic mit Tastenkombination Alt + F4 schließen

  • das Makro steht nun in der Datei zur Verfügung


Gruß,
Andreas
Kommando zurück:

Ich Idiot!

Ich habe per Dropdown Ja/Nein zur Auswahl gegeben .... was steht im Makro? ja mit kleinem j !!!

Echt ey ....

Danke Ralf, du hast mir echt wahnsinnig geholfen !!  :17:

:100:

Noch bitte eine Kleinigkeit: In Spalte 3 (also C) soll das Makro zusätzlich einen bestimmten Textwert prüfen bevor es ausgelöst wird. Also Spalte 3 XY + Spalte 7 YZ dann Makro. Kannst du mir hier noch bitte kurz helfen? Dann wärs komplett    :17:
Hi,

so vielleicht:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
    If .Column = 6 And .CountLarge = 1 Then
       If .Value = "Ja" Then
          If Range("G" & .Row).Value = "XY" Then
                Call Tankmakro_start
             End If
          End If
       End If
    End If
 End With
End Sub

oder
Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
    If .Column = 6 And .CountLarge = 1 Then
       If .Value = "Ja" And Range("G" & .Row).Value = "XY" Then
          Call Tankmakro_start
       End If
    End If
 End With
End Sub

oder
Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
     If .Column = 6 And .CountLarge = 1 And .Value = "Ja" And Range("G" & .Row).Value = "XY" Then
        Call Tankmakro_start
     End If
  End With
End Sub
Danke euch, funktioniert alles wie es soll :)

:15:
Seiten: 1 2