| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: EXCEL 2010 VBA (2008 mal gelesen)
|
Ashley Michelle Mitglied
 Beiträge: 4 Registriert: 20.04.2015
|
erstellt am: 20. Apr. 2015 11:01 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen, seit ein paar Tagen arbeite ich an der Erweiterung meiner EXCEL nur leider funktioniert das nicht so wie es soll. Hier die Codes: Sub Beenden() ' mit "Ja" und "Nein" Schaltflächen Dim Eingabewert As Byte Eingabewert = MsgBox("Möchten Sie dieses Programm Beenden mit Speichern (Ja) oder Beenden ohne Speichern (Nein)?", vbYesNo, "Beenden") If Eingabewert = vbYes Then ' MsgBox "Sie haben Beenden mit Speichern gewählt" Call SicherheitsabfrageBeendenmitSpeichern() ElseIf Eingabewert = vbNo Then ' MsgBox "Sie haben Beenden ohne Speichern gewählt" Call SicherheitsabfrageBeendenohneSpeichern() End If End Sub Sub SicherheitsabfrageBeendenmitSpeichern() ' mit "Ja", "Nein", "Abbrechen" Schaltflächen Dim Eingabewert As Byte Eingabewert = MsgBox("Sie wählten Beenden mit Speichern. Sind Sie sicher?", vbYesNoCancel, "Sicherheitsabfrage Beenden mit Speichern") If Eingabewert = vbYes Then ' MsgBox "Sie haben Ja gewählt" Call BeendenmitSpeichern() ElseIf Eingabewert = vbNo Then ' MsgBox "Sie haben Nein gewählt" Call Beenden() Else ' MsgBox "Sie haben Abbrechen gewählt" Call SicherheitsabfrageAbbrechen() End If End Sub Sub SicherheitsabfrageBeendenohneSpeichern() ' mit "Ja", "Nein", "Abbrechen" Schaltflächen Dim Eingabewert As Byte Eingabewert = MsgBox("Sie wählten Beenden ohne Speichern. Sind Sie sicher?", vbYesNoCancel, "Sicherheitsabfrage Beenden ohne Speichern") If Eingabewert = vbYes Then ' MsgBox "Sie haben Ja gewählt" Call BeendenohneSpeichern() ElseIf Eingabewert = vbNo Then ' MsgBox "Sie haben Nein gewählt" Call Beenden() Else ' MsgBox "Sie haben Abbrechen gewählt" Call SicherheitsabfrageAbbrechen() End If End Sub Sub SicherheitsabfrageAbbrechen() ' mit "Ja" und "Nein" Schaltflächen Dim Eingabewert As Byte Eingabewert = MsgBox("Sie wählten Abbrechen. Sind Sie sicher?", vbYesNo, "Sicherheitsabfrage Abbrechen") If Eingabewert = vbYes Then ' MsgBox "Sie haben Ja gewählt" Call Abbrechen() ElseIf Eingabewert = vbNo Then ' MsgBox "Sie haben Nein gewählt" Call Beenden() End If End Sub Sub BeendenmitSpeichern() Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", True)" Application.DisplayFormulaBar = True Application.DisplayStatusBar = True ActiveWindow.DisplayHeadings = True ActiveWindow.DisplayGridlines = True ActiveWindow.DisplayHorizontalScrollBar = True ActiveWindow.DisplayVerticalScrollBar = True ActiveWindow.DisplayWorkbookTabs = True Application.CommandBars("cell").Enabled = True Tastenkombinationen_aktivieren Dim DatNam As String, DatExt As String DatNam = ThisWorkbook.Name DatExt = Mid(DatNam, InStrRev(DatNam, ".")) DatNam = Mid(DatNam, 1, InStrRev(DatNam, ".") - 1) DatNam = DatNam & Format(Now, "_YYYY-MM-DD_hh-mm-ss") & DatExt ThisWorkbook.SaveCopyAs Pfad & DatNam End If End Sub ' ActiveWorkbook.Save Application.Quit End Sub Sub BeendenohneSpeichern() Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", True)" Application.DisplayFormulaBar = True Application.DisplayStatusBar = True ActiveWindow.DisplayHeadings = True ActiveWindow.DisplayGridlines = True ActiveWindow.DisplayHorizontalScrollBar = True ActiveWindow.DisplayVerticalScrollBar = True ActiveWindow.DisplayWorkbookTabs = True Application.CommandBars("cell").Enabled = True Tastenkombinationen_aktivieren ActiveWorkbook.Saved = True Application.Quit End Sub Sub Abbrechen() ' MsgBox "Diese Routine wird abgebrochen!" Dim i% Application.ScreenUpdating = False Application.EnableEvents = False For i = 1 To Sheets.Count Sheets(i).Activate With ActiveWindow .Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", False)" .Application.DisplayFormulaBar = False .Application.DisplayStatusBar = False ActiveWindow.DisplayHeadings = False ActiveWindow.DisplayGridlines = False ActiveWindow.DisplayHorizontalScrollBar = False ActiveWindow.DisplayVerticalScrollBar = False ActiveWindow.DisplayWorkbookTabs = False Application.CommandBars("cell").Enabled = False End With Next ThisWorkbook.Worksheets("Stammdaten").Activate Application.EnableEvents = True Application.ScreenUpdating = True Scrollbereich_festlegen Tastenkombinationen_deaktivieren End Sub Statt das die Datei es abbricht, beginnt die ganze abfrage von vorne an und das ist nervig. Wer weiß abhilfe? Mit freundlichen Grüßen und vielen Dank im voraus, Ashley Michelle Harder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2862 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 20. Apr. 2015 12:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Ashley Michelle
Hallo Ashley Michelle, Willkommen im Forum Beim ersten Überfliegen habe ich jetzt nichts gesehen, dass besonders auffällig ist. Was mir allerdings aufgefallen ist: 1. Du verwendest für die Rückgabewerte der MsgBox eine Variable mit Byte-Dimensionierung Hier nehme ich eigentlich immer nichts oder Variant 2. Du überprüfst das das Ergebnis mit Vorgabe vbYesNo mit
Code:
If Eingabewert = vbYes Then ' MsgBox "Sie haben Beenden mit Speichern gewählt" Call SicherheitsabfrageBeendenmitSpeichern() ElseIf Eingabewert = vbNo Then ' MsgBox "Sie haben Beenden ohne Speichern gewählt" Call SicherheitsabfrageBeendenohneSpeichern() End If
ein weiteres Else taucht nicht mehr auf ... Eine Undeutlichkeit, die zwar kein Fehler ist aber den Lesefluß stocken lässt (Fehlt da etwas?) Hast Du den Code einmal mit Einzelschritten (F8) durchlaufen lassen? Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ashley Michelle Mitglied
 Beiträge: 4 Registriert: 20.04.2015
|
erstellt am: 20. Apr. 2015 12:40 <-- editieren / zitieren --> Unities abgeben:         
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2862 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 20. Apr. 2015 13:08 <-- editieren / zitieren --> Unities abgeben:          Nur für Ashley Michelle
|
Ashley Michelle Mitglied
 Beiträge: 4 Registriert: 20.04.2015
|
erstellt am: 20. Apr. 2015 15:07 <-- editieren / zitieren --> Unities abgeben:         
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2862 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 20. Apr. 2015 15:16 <-- editieren / zitieren --> Unities abgeben:          Nur für Ashley Michelle
In diesem Fall hilft oft F1 (Hilfe): Zitat: Variant-DatentypDer Datentyp Variant ist der Datentyp für alle Variablen, die nicht explizit (durch eine Anweisung wie Dim, Private, Public oder Static) als anderer Datentyp deklariert werden. Für den Datentyp Variant gibt es kein Typkennzeichen. Variant ist ein besonderer Datentyp, der beliebige Daten mit Ausnahme von String-Daten fester Länge und benutzerdefinierten Typen enthalten kann. Ein Variant kann auch die speziellen Werte Empty, Error, Nothing und Null enthalten.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ashley Michelle Mitglied
 Beiträge: 4 Registriert: 20.04.2015
|
erstellt am: 20. Apr. 2015 15:24 <-- editieren / zitieren --> Unities abgeben:         
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2862 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 20. Apr. 2015 16:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Ashley Michelle
Hast Du das denn nicht selber programmiert? Ändere alle:
Code: Dim Eingabewert As Byte
zu:
Code: Dim Eingabewert As Variant
oder :
Code: Dim Eingabewert
in diesem Fall wird automatisch der Datentyp Variant gesetzt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |