Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  EXCEL 2010 VBA

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   EXCEL 2010 VBA (1291 mal gelesen)
Ashley Michelle
Mitglied


Sehen Sie sich das Profil von Ashley Michelle an!   Senden Sie eine Private Message an Ashley Michelle  Schreiben Sie einen Gästebucheintrag für Ashley Michelle

Beiträge: 4
Registriert: 20.04.2015

erstellt am: 20. Apr. 2015 11:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2162
Registriert: 02.05.2006

Office 2010
Visual Basic

erstellt am: 20. Apr. 2015 12:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ashley Michelle 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Ashley Michelle an!   Senden Sie eine Private Message an Ashley Michelle  Schreiben Sie einen Gästebucheintrag für Ashley Michelle

Beiträge: 4
Registriert: 20.04.2015

erstellt am: 20. Apr. 2015 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nein, ich habe das nicht mit Einzelschritten durchlaufen lassen. Wie macht man das?

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2162
Registriert: 02.05.2006

Office 2010
Visual Basic

erstellt am: 20. Apr. 2015 13:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ashley Michelle 10 Unities + Antwort hilfreich

Hallo,

Setze Dir in die erste Befehlszeile der sub beenden einen Stoppunkt (mit F9 )
dann weiter mit F8

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ashley Michelle
Mitglied


Sehen Sie sich das Profil von Ashley Michelle an!   Senden Sie eine Private Message an Ashley Michelle  Schreiben Sie einen Gästebucheintrag für Ashley Michelle

Beiträge: 4
Registriert: 20.04.2015

erstellt am: 20. Apr. 2015 15:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Was Bitte ist ein Variant?

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2162
Registriert: 02.05.2006

Office 2010
Visual Basic

erstellt am: 20. Apr. 2015 15:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ashley Michelle 10 Unities + Antwort hilfreich

In diesem Fall hilft oft F1 (Hilfe):
Zitat:
Variant-Datentyp

Der 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


Sehen Sie sich das Profil von Ashley Michelle an!   Senden Sie eine Private Message an Ashley Michelle  Schreiben Sie einen Gästebucheintrag für Ashley Michelle

Beiträge: 4
Registriert: 20.04.2015

erstellt am: 20. Apr. 2015 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ist es möglich das ich die Dim... MsgBox in eine Variant umwandeln und wie, vielleicht kann ich dadurch das Problem beheben.

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2162
Registriert: 02.05.2006

Office 2010
Visual Basic

erstellt am: 20. Apr. 2015 16:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ashley Michelle 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz