Office: Probleme mit MsgBox "Abbrechen"

Helfe beim Thema Probleme mit MsgBox "Abbrechen" in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo miteinander, der untenstehende Code läuft an sich, nur bei MsgBox beim Abbrechen werden die Daten trotzdem teilweise übertragen. Und wenn ich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Wolf38, 15. Juni 2016.

  1. Probleme mit MsgBox "Abbrechen"


    Hallo miteinander,

    der untenstehende Code läuft an sich, nur bei MsgBox beim Abbrechen
    werden die Daten trotzdem teilweise übertragen.

    Und wenn ich abbreche sollte der Code nicht weiterlaufen, sondern
    den Ablauf beenden.

    Danke und Gruss
    Wolf





    PHP:
             Option Explicit
    Sub Commandbutton_Klick
    ()
    Call Makro1
    Call Makro2
    End Sub

    Sub Makro1
    ()
    'Private Sub CommandButton2_Click()

    '
    End SubSub Abteilung_PCFSpeichern()
    Dim wbQuelle As WorkbookwksQuelle As Worksheet
    Dim wbZiel 
    As WorkbookwksZiel As Worksheet
    Dim strZiel 
    As StringstrPfadZiel As String
    Dim bolOpen 
    As Boolean
    Dim Zeile_Z 
    As LongZelle_Letzte As Range
    [b][color="RoyalBlue"]If MsgBox("Team Test jetzt Ãœbertragen & speichern?"vbQuestion vbOKCancel_
    "Jetzt Ãœbertragen & speichern") = vbCancel Then GoTo Fehler
    On Error 
    GoTo Fehler[/color][/b]

    Set wbQuelle ActiveWorkbook 'Datei "Laufkarte_zur_Auftragsabwicklung.xlsm"
    Set wksQuelle = wbQuelle.Worksheets("Team_Test")

    Application.ScreenUpdating = False

    strPfadZiel = "G:\PC\Test\Fertigung\_Auswertung"       '
    ### anpassen ##!!!
    strPfadZiel wbQuelle.Path                'wenn beide Dateien im gleichen Verzeichnis
    strZiel = "Berechnung_V09.xlsm"
    If fncCheckWorkbookOpen(strZiel) Then
    Set wbZiel = Application.Workbooks(strZiel)
    bolOpen = True
    Else
    Set wbZiel = Application.Workbooks.Open(strPfadZiel & Application.PathSeparator _
    & strZiel)
    bolOpen = False
    End If
    Set wksZiel = wbZiel.Worksheets("Abteilung_PCF")
    With wksZiel


    '
    nächste Einfüge-Zeile ermitteln
    Set Zelle_Letzte 
    = .Cells.Find(what:="*"After:=Range("B4"), _
    LookIn
    :=xlFormulaslookat:=xlWholesearchorder:=xlByRows_
    searchdirection
    :=xlPrevious)
    If 
    Zelle_Letzte Is Nothing Then
    Zeile_Z 
    1
    Else
    Zeile_Z Zelle_Letzte.Row
    End 
    If
    'Zellinhalte Ã¼bertragen - nur Werte

    wksQuelle.Range("B3:B4:B5:B6:B7:B8:B9:B10:B11:B12:B13:B14:B16:B17:B18").Copy
    .Range("B3:B4:B5:B6:B7:B8:B9:B10:B11:B12:B13:B14:B16:B17:B18").PasteSpecial xlPasteValues
    wksQuelle.Range("H7").Copy
    .Range("L34").PasteSpecial xlPasteValues
    wksQuelle.Range("H8").Copy
    .Range("L35").PasteSpecial xlPasteValues
    wksQuelle.Range("B1").Copy
    .Range("B1").PasteSpecial xlPasteValues

    End With
    Application.CutCopyMode = False
    If bolOpen = False Then
    wbZiel.Close savechanges:=True
    End If
    Fehler:
    Application.ScreenUpdating = True
    With Err
    Select Case .Number
    Case 0 '
    Alles OK
    Case Else
    MsgBox "Fehler-Nr.: " & .Number vbLf & .Description
    End Select
    End With
    Set wbZiel 
    NothingSet wksZiel NothingSet Zelle_Letzte Nothing
    Set wbQuelle 
    NothingSet wksQuelle Nothing
    End Sub
    :)
     
    Wolf38, 15. Juni 2016
    #1
  2. Hi,

    Makro 2 läuft natürlich weiter...
    Warum lässt du nicht die Sub im Code starten oder steuerst die Subs mit Parametern?
     
    chris-kaiser, 16. Juni 2016
    #2
  3. Hallo Chris,

    weil ich leider nicht viel Ahnung von der ganzen Sache habe. *rolleyes.gif*

    Daher weiss ich auch nicht genau, was dein Vorschlag ist.

    Kannst du mir ein wenig weiterhelfen ?

    Danke und Gruss
    Wolf
     
    Wolf38, 17. Juni 2016
    #3
  4. Probleme mit MsgBox "Abbrechen"

    Moin,

    der MsgBox ist erstmal völlig schnuppe, ob sie mit Enter oder mit Escape quittiert wird. Erst wenn Buttons angegeben werden (oder wird, kann auch einer sein), reagiert die MsgBox. Schau mal die Hilfe dazu an.

    Wenn die Ausführung von Makro2 (kein doller Name, btw) verhindert werden soll, dann mach aus Makro1 eine Function, die einen Wert zurückliefert. Den fragst Du vor dem Aufruf von Makro2 ab.

    (Es gibt noch andere Wege ...)

    Gruß
    Ralf
     
    drambeldier, 17. Juni 2016
    #4
  5. Wie könnte so ein Weg ausschauen ?
     
    Wolf38, 17. Juni 2016
    #5
  6. Hallo Wolf,
    Aus meiner Sicht haben die Kollegen schon ganz konkrete Hinweise gegeben.

    Nachstehend eine mögliche Umsetzung.
    Code:
     
    aloys78, 17. Juni 2016
    #6
  7. Hallo Aloys,

    danke mal für den Code Vorschlag, hab mal versucht, diesen in meinen einzubauen. Leider funktioniert dieser Einbau leider nicht so wie er soll. Was
    hab ich da wieder falsch gemacht ?*frown.gif*

    Danke und Gruss
    Wolf


    PHP:
             Option Explicit

    Dim swCancel 
    As Boolean         'True = Code abbrechen

    Sub Commandbutton_Klick()
    Call Makro1
    If swCancel = True Then Exit Sub

    Call Makro2
    End Sub


    Sub Makro1()




    Dim wbQuelle As Workbook, wksQuelle As Worksheet
    Dim wbZiel As Workbook, wksZiel As Worksheet
    Dim strZiel As String, strPfadZiel As String
    Dim bolOpen As Boolean
    Dim Zeile_Z As Long, Zelle_Letzte As Range
    '    
    Dim swCancel As Boolean

    If MsgBox("Team Wolf jetzt Ãœbertragen & speichern?"vbQuestion vbOKCancel_
    "Jetzt Ãœbertragen & speichern & löschen Werte Team Wolf") = swCancel Then



    Fehler
    :
    With Err
    Select 
    Case .Number
    Case 'Alles OK
    Case Else
    MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
    swCancel = True
    End Select
    End With

    Set wbQuelle = ActiveWorkbook '
    Datei "Laufkarte_zur_Auftragsabwicklung.xlsm"
    Set wksQuelle wbQuelle.Worksheets("Team_Wolf")

    Application.ScreenUpdating False

    strPfadZiel 
    "C:\Users\Monika\Desktop\Archiv Wolfram\RCV_NEU"       '### anpassen ##!!!
    strPfadZiel = wbQuelle.Path                '
    wenn beide Dateien im gleichen Verzeichnis
    strZiel 
    "Berechnung Abteilung PAF_V08.xlsm"
    If fncCheckWorkbookOpen(strZielThen
    Set wbZiel 
    Application.Workbooks(strZiel)
    bolOpen True
    Else
    Set wbZiel Application.Workbooks.Open(strPfadZiel Application.PathSeparator _
    strZiel)
    bolOpen False
    End 
    If
    Set wksZiel wbZiel.Worksheets("Abteilung_PAF")
    With wksZiel


    'nächste Einfüge-Zeile ermitteln
    Set Zelle_Letzte = .Cells.Find(what:="*", After:=Range("B4"), _
    LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, _
    searchdirection:=xlPrevious)
    If Zelle_Letzte Is Nothing Then
    Zeile_Z = 1
    Else
    Zeile_Z = Zelle_Letzte.Row
    End If
    '
    Zellinhalte Ã¼bertragen nur Werte

    wksQuelle
    .Range("B3:B4:B5:B6:B7:B8:B9:B10:B11:B12:B13:B14:B16:B17:B18").Copy
    .Range("B3:B4:B5:B6:B7:B8:B9:B10:B11:B12:B13:B14:B16:B17:B18").PasteSpecial xlPasteValues
    wksQuelle
    .Range("H7").Copy
    .Range("L34").PasteSpecial xlPasteValues
    wksQuelle
    .Range("H8").Copy
    .Range("L35").PasteSpecial xlPasteValues

    End With
    Application
    .CutCopyMode False
    If bolOpen False Then
    wbZiel
    .Close savechanges:=True
    End 
    If
    Fehler1:
    Application.ScreenUpdating True
    With Err
    Select 
    Case .Number
    Case 0 Alles OK
    Case Else
    MsgBox "Fehler-Nr.: " & .Number vbLf & .Description
    End Select
    End With
    Set wbZiel 
    NothingSet wksZiel NothingSet Zelle_Letzte Nothing
    Set wbQuelle 
    NothingSet wksQuelle Nothing
    End 
    If

    End Sub
     
    Wolf38, 17. Juni 2016
    #7
  8. Probleme mit MsgBox "Abbrechen"

    Hallo Aloys,

    danke mal für den Code Vorschlag, hab mal versucht, diesen in meinen einzubauen. Leider funktioniert dieser Einbau leider nicht so wie er soll. Was
    hab ich da wieder falsch gemacht ?*frown.gif*

    Danke und Gruss
    Wolf

    Option Explicit

    Dim swCancel As Boolean 'True = Code abbrechen

    Sub Commandbutton_Klick()
    Call Makro1
    If swCancel = True Then Exit Sub

    Call Makro2
    End Sub


    Sub Makro1()




    Dim wbQuelle As Workbook, wksQuelle As Worksheet
    Dim wbZiel As Workbook, wksZiel As Worksheet
    Dim strZiel As String, strPfadZiel As String
    Dim bolOpen As Boolean
    Dim Zeile_Z As Long, Zelle_Letzte As Range
    ' Dim swCancel As Boolean

    If MsgBox("Team Wolf jetzt Übertragen & speichern?", vbQuestion + vbOKCancel, _
    "Jetzt Übertragen & speichern & löschen Werte Team Wolf") = swCancel Then



    Fehler:
    With Err
    Select Case .Number
    Case 0 'Alles OK
    Case Else
    MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
    swCancel = True
    End Select
    End With

    Set wbQuelle = ActiveWorkbook 'Datei "Laufkarte_zur_Auftragsabwicklung.xlsm"
    Set wksQuelle = wbQuelle.Worksheets("Team_Wolf")

    Application.ScreenUpdating = False

    strPfadZiel = "C:\Users\Monika\Desktop\Archiv Wolfram\RCV_NEU" '### anpassen ##!!!
    strPfadZiel = wbQuelle.Path 'wenn beide Dateien im gleichen Verzeichnis
    strZiel = "Berechnung Abteilung PAF_V08.xlsm"
    If fncCheckWorkbookOpen(strZiel) Then
    Set wbZiel = Application.Workbooks(strZiel)
    bolOpen = True
    Else
    Set wbZiel = Application.Workbooks.Open(strPfadZiel & Application.PathSeparator _
    & strZiel)
    bolOpen = False
    End If
    Set wksZiel = wbZiel.Worksheets("Abteilung_PAF")
    With wksZiel


    'nächste Einfüge-Zeile ermitteln
    Set Zelle_Letzte = .Cells.Find(what:="*", After:=Range("B4"), _
    LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, _
    searchdirection:=xlPrevious)
    If Zelle_Letzte Is Nothing Then
    Zeile_Z = 1
    Else
    Zeile_Z = Zelle_Letzte.Row
    End If
    'Zellinhalte übertragen - nur Werte

    wksQuelle.Range("B3:B4:B5:B6:B7:B8:B9:B10:B11:B12:B13:B14:B16:B17:B18").Copy
    .Range("B3:B4:B5:B6:B7:B8:B9:B10:B11:B12:B13:B14:B16:B17:B18").PasteSpecial xlPasteValues
    wksQuelle.Range("H7").Copy
    .Range("L34").PasteSpecial xlPasteValues
    wksQuelle.Range("H8").Copy
    .Range("L35").PasteSpecial xlPasteValues

    End With
    Application.CutCopyMode = False
    If bolOpen = False Then
    wbZiel.Close savechanges:=True
    End If
    Fehler1:
    Application.ScreenUpdating = True
    With Err
    Select Case .Number
    Case 0 'Alles OK
    Case Else
    MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
    End Select
    End With
    Set wbZiel = Nothing: Set wksZiel = Nothing: Set Zelle_Letzte = Nothing
    Set wbQuelle = Nothing: Set wksQuelle = Nothing
    End If

    End Sub
     
    Wolf38, 17. Juni 2016
    #8
  9. Hallo Wolf,
    Klar - jetzt taucht plötzlich eine neue MsgBox-Anweisung auf.
    Mein Vorschlag: Zurück auf Los !

    Du hast eine Prozedur, in der nacheinander Macro 1 und 2 aufgerufen werden.
    Jetzt erläutere mal, was Du wann erreichen willst.
    Dann kann man Dir ggf einen passenden Code-Vorschlag liefern.

    Gruß
    Aloys
     
    aloys78, 17. Juni 2016
    #9
  10. Moin,

    Code:
    diese Anweisung ist sinnlos, bevor swCancel gesetzt wurde.

    Beantworte Dir mal auf einem Zettel ein paar Fragen:
    • Soll Makro1 immer ausgeführt werden?
    • Wenn ja - was soll passieren?
    • Wenn nein - was soll passieren?

    Noch 'ne Anmerkung: Die Code-Darstellung ist unter aller Sau - keine Einrückungen, sinnlose Unterstreichungen, obskure Rahmen um jede Zeile. Verwende bitte die Code-Brackets, wer will denn vom Lesen Augenkrebs kriegen.
     
    drambeldier, 17. Juni 2016
    #10
  11. Hallo Miteinander,

    So dann werde ich mein Projekt nochmal vom Anfang an erläutern versuchen.

    1. Werte werden in die Tabelle(PP__1) eingetragen und berechnet.

    2. Die berechneten Werte werden in die Tabelle(Team-Test) übergeben mit
    Formel.
    3. Die Werte aus der Tabelle (Team-Test) werden in eine geschlossene Datei übertragen und die einzel Werte aus PP__1 werden in die Tabellenblätter Test_1 usw. übertragen mittels button.

    Aber es sollen nur die Werte übertragen werden von PP__1 in die Tabellen Test_1 usw. wenn in der Spalte D D6*biggrin.gif*15 ein Wert vorhanden ist, weil es soll keine O Werte in die Tabellen übertragen.

    4. Und die MSg - Box mit dem Abbrechen dient nur dazu, fals jemand noch drauf kommt wenn er übertragen gedrückt hat, dass er was vergessen hat und nochmal was in der Tabelle (PP__1) neu eintragen möchte. Und so sollte beim Abbrechen der Code von neuem beginnen.

    Habe auch meine Original Datei beigefügt, wo man sicher besser erkennen kann was ich möchte, was das mit dem erklären ist so eine Sache. *wink.gif*

    So nun hoffe ich mal, dass ihr mit meinen Ausführungen was anfangen könnt.

    Danke und Gruss
    Wolf
     
    Wolf38, 19. Juni 2016
    #11
  12. Hi,

    Set wbQuelle = Nothing: Set wksQuelle = Nothing
    Exit Sub

    füge im Makro1
    vor End Sub
    ein Exit Sub ein

    dann wird Makro 2 bei einem Fehler nicht ausgeführt.
     
    chris-kaiser, 20. Juni 2016
    #12
  13. Probleme mit MsgBox "Abbrechen"

    meine Angaben sind wohl mal wieder schlecht ?

    Bitte Unklarheiten mitteilen, dann versuche ich sie zu beantworten.

    Danke und Gruss
    Wolf
     
    Wolf38, 20. Juni 2016
    #13
  14. Hi,

    ? Bricht der Code den nicht ab?
    Exit Sub vermeide ich zumeist, da ich glaubte du hast eine Userform. (sonst würde diese geschlossen)
    Aber der Code liegt ja nur auf einer Schaltfläche auf dem Tabellenblatt, deshalb würde Exit SUB alles abbrechen.

    Den Rest habe ich jetzt nicht angeschaut!

    Ist das nicht mehr die aktuelle Frage?
     
    chris-kaiser, 20. Juni 2016
    #14
  15. nun das mit dem Exit Sub hab ich probiert und das funktioniert leider nicht.

    Und ob es noch um die Frage geht, also Aloys hat ja gemeint, dass er das ganze nochmal neu anfangen würde.

    Und so habe ich meine Original Datei angehängt und noch dazu geschrieben was ich damit machen möchte.

    Daher habe ich jetzt mal gefragt, was nicht so ganz klar ist.

    Gruss
    Wolf
     
    Wolf38, 20. Juni 2016
    #15
Thema:

Probleme mit MsgBox "Abbrechen"

Die Seite wird geladen...
  1. Probleme mit MsgBox "Abbrechen" - Similar Threads - Probleme MsgBox Abbrechen

  2. Probleme mit dem automatisches Inhaltsverzeichnis

    in Microsoft Word Hilfe
    Probleme mit dem automatisches Inhaltsverzeichnis: Hallo zusammen, ich stehe vor dem Problem, dass ich in einem automatischen Inhaltsverzeichnis zwei unterschiedliche Darstellung von Seitenzahlen haben möchte. Ich versuche es unten zu...
  3. Probleme mit bedingter Formatierung

    in Microsoft Excel Hilfe
    Probleme mit bedingter Formatierung: Hallo ihr Lieben, folgende Herausforderung: Ich möchte die Formatierung des Wertes in B7 (bzw. auch alle weiteren Werte in Spalte B) nach folgenden Bedingungen anpassen: 1. WENN C7<0,05 DANN...
  4. Probleme mit Formatierung in geschütztem Word-Dokument – Schriftstil nicht änderbar

    in Microsoft Word Hilfe
    Probleme mit Formatierung in geschütztem Word-Dokument – Schriftstil nicht änderbar: Hallo zusammen, ich habe ein Word-Dokument erstellt, das als Vorlage dient und entsprechend geschützt ist. Dabei sollen folgende Anforderungen erfüllt werden: Schriftart: Die Schriftart darf...
  5. VBA-Makro zur Zellenformatierung Syntax probleme

    in Microsoft Excel Hilfe
    VBA-Makro zur Zellenformatierung Syntax probleme: Hallo zusammen, ich möchte per Makro Zellen formatieren. Tausender-Trennzeichen 3 Nachkommastellen Positive Zahlen Schwarz Negative Zahlen Rot Nullwert mit - Hinter der Zahl soll noch eine...
  6. Probleme mit Makro das jede Zeile in der ein "Text" steht löscht?!

    in Microsoft Excel Hilfe
    Probleme mit Makro das jede Zeile in der ein "Text" steht löscht?!: Hallo Leute, Ich habe mal wieder ein Problem, ich hoffe ihr könnt mir hier helfen! :) Habe hier schon ein Makro soweit, aber es macht halt noch nicht genau das was es soll, woran ich natürlich...
  7. Probleme mit dem Kopieren aus Daten aus OneNote 2016

    in Sonstiges
    Probleme mit dem Kopieren aus Daten aus OneNote 2016: Hallo, ich habe neuerdings Probleme mit dem Kopieren von Texten aus OneNote heraus. Bei Whatsapp wird z. B. dann noch mal ein Bild mit eingefügt. Das gleiche Problem habe ich bei einem Webmailer....
  8. Probleme mit Summewenn bei neuer EXCEL Version

    in Microsoft Excel Hilfe
    Probleme mit Summewenn bei neuer EXCEL Version: Hallo zusammen, ich bin ratlos. In meinem alten EXCEL sheet hat die Funktion =SUMME(WENN(JAHR($E$7:$E$54)=2019;$G$7:$G$54)) super funktioniert. Mit der aktuellen EXCEL Version jetzt aber nicht...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden