Frage JaNeinAbbruch korrekt programmieren

Moderator: ModerationP

Frage JaNeinAbbruch korrekt programmieren

Beitragvon hifi11 » 23. Sep 2021, 16:05

Hallo Supportgemeinde

Ich stosse vor ein Problem mit einem Frage Feld JaNeinFrage. Ich weiss nicht wie ich dies gestalten muss.

Wenn die Frage mit Ja beantwortet wird, soll der Datensatz überschrieben werden.

Bei Nein soll die Eingabe abgebrochen, die UserForm jedoch nicht geschlossen werden. Eine Überarbeitung der Eingaben soll möglich sein. Es darf kein Eintrag im Worksheet vorgenommen werden.

Bei Abbruch soll die UserForm mitgeschlossen werden und keine Eingabe auf dem Worksheet vorgenommen werden.

Kann mir jemand hierbei helfen?


Code: Alles auswählen
        '###############################################
        '##        Kombobox Button Einfuegen          ##
        '###############################################

Private Sub cbo_Speichern_Click()

    Dim letztezeile As Integer
    Dim finden As Object
   
    letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ActiveSheet.Cells(letztezeile, 1).Value = txt_Objektnummer
    Set finden = Columns(1).Find(what:=txt_Objektnummer)
   
    If finden Is Nothing Then
        MsgBox "Es wurde kein passendes Objekt gefunden!"
    Else
   
    If txt_Objektnummer <> "" Then
        If MsgBox("Der Datensatz ist bereits vorhanden. Soll er überschrieben werden?", _
        vbQuestion + vbYesNoCancel, "Datensatz speichern?") = vbNo Then Exit Sub
       
        ElseIf MsgBox("Der Datensatz ist bereits vorhanden. Soll er überschrieben werden?", _
        vbQuestion + vbYesNoCancel, "Datensatz speichern?") = vbCancel Then Exit Sub
       
'        ElseIf MsgBox("Der Datensatz ist bereits vorhanden. Soll er überschrieben werden?", _
'        vbQuestion + vbYesNoCancel, "Datensatz speichern?") = vbYes Then Save
    End If

        lbl_Zeitstempelanzeige = finden.Offset(0, 1)
        txt_5Rappenanzahl = finden.Offset(0, 2)
        lbl_5Rappenkassenstand = finden.Offset(0, 3)
        txt_10Rappenanzahl = finden.Offset(0, 4)
        lbl_10Rappenkassenstand = finden.Offset(0, 5)
        txt_20Rappenanzahl = finden.Offset(0, 6)
        lbl_20Rappenkassenstand = finden.Offset(0, 7)
        txt_50Rappenanzahl = finden.Offset(0, 8)
        lbl_50Rappenkassenstand = finden.Offset(0, 9)
        txt_1Frankenanzahl = finden.Offset(0, 10)
        lbl_1Frankenkassenstand = finden.Offset(0, 11)
        txt_2Frankenanzahl = finden.Offset(0, 12)
        lbl_2Frankenkassenstand = finden.Offset(0, 13)
        txt_5Frankenanzahl = finden.Offset(0, 14)
        lbl_5Frankenkassenstand = finden.Offset(0, 15)
        txt_10Frankenanzahl = finden.Offset(0, 16)
        lbl_10Frankenkassenstand = finden.Offset(0, 17)
        txt_20Frankenanzahl = finden.Offset(0, 18)
        lbl_20Frankenkassenstand = finden.Offset(0, 19)
        txt_50Frankenanzahl = finden.Offset(0, 20)
        lbl_50Frankenkassenstand = finden.Offset(0, 21)
        txt_100Frankenanzahl = finden.Offset(0, 22)
        lbl_100Frankenkassenstand = finden.Offset(0, 23)
        txt_200Frankenanzahl = finden.Offset(0, 24)
        lbl_200Frankenkassenstand = finden.Offset(0, 25)
        txt_1000Frankenanzahl = finden.Offset(0, 26)
        lbl_1000Frankenkassenstand = finden.Offset(0, 27)
        lbl_TotalMuenzenwert = finden.Offset(0, 28)
        lbl_Totalbanknotenwert = finden.Offset(0, 29)
        lbl_Kassenstandwert = finden.Offset(0, 30)
        cbo_Standorte = finden.Offset(0, 32)
       
    End If

End Sub


Gruess, MH
hifi11
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 20. Sep 2021, 09:08

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon slowboarder » 23. Sep 2021, 16:30

HI

so wie du das programmiert hast, muss man ja die Messagbox bis zu 3x beantworten.

die Messagebox sollte nur einmal erscheinen.
Dazu gibts mehrere Möglichkeiten:

a) Messageboxergebnis in einer Variablen speichen:
Code: Alles auswählen
x = Msgbox(...)
    if x = vbYes
       hier der Code für ja
    elseif x = vbNo
       hier der Code für nein
    else
       hier der Code für abbruch
    End if


b) mit Select Case arbeiten:
Code: Alles auswählen
Select Case Msgbox(...)
    Case vbYes
        hier der Code für ja
    Case vbNo
        hier der Code für nein
    Case else
         hier der Code für abbruch
End Select


Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28452
Registriert: 18. Apr 2009, 13:33

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon hifi11 » 24. Sep 2021, 06:35

Guten Tag Daniel

Besten Dank für den Tipp. Nun benötige ich noch dein Wissen in Bezug auf den Code für Ja, Nein, Abbruch. Leider kann ich kein Beispiel unter Google finden welches mir hierbei weiterhilft.

Danke

Gruess

Matthias
hifi11
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 20. Sep 2021, 09:08

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon slowboarder » 24. Sep 2021, 07:33

Wo kommt denn der Code her, den du am Anfang gezeigt hast?
Den hast du ja auch geschrieben, die notwendigen Befehle in VBA scheinen dir bekannt zu sein.
Du musst sie nur noch in dir richtige Struktur bringen und festlegen, was wann ausgeführt werden soll.

Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28452
Registriert: 18. Apr 2009, 13:33

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon hifi11 » 24. Sep 2021, 12:33

Hallo Daniel

Nein ich kenne mich in VBA nicht aus. Sollte ich dies irgendwie anders herübergebracht haben, dann stimmt dies nicht.

Ich versuche die Ansätze aus Youtube und Co. so gut es geht, für meine Lösungen zu verwenden. Dies gelingt mir anhand von bereits geschriebenen Projekten und mit sehr viel Aufwand. Daher auch der Code wie er ist. Mit der Community lassen sich meine Projekte wie ich Sie nenne dann umsetzen.

Da ich auf Unterstützung angewiesen bin, wäre es super, wenn jemand mir hierbei helfen kann. Vielleicht kann mir ja auch jemand von euch sagen, wie ich zu dem Wissen gelange. Youtube und Co. reichen da nicht aus, wenn die Basics nicht vorhanden sind.

Gruess

Matthias
hifi11
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 20. Sep 2021, 09:08

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon slowboarder » 24. Sep 2021, 12:55

wenn du dich nicht auskennst, wo kommt dann der Code her, den du in deinem ersten Beitrag gezeigt hast?
wenn man keine Ahnung von VBA hat, schreibt man solchen Code nicht.
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28452
Registriert: 18. Apr 2009, 13:33

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon hifi11 » 24. Sep 2021, 14:00

wie bereits beschrieben, sehe ich mir Youtube Videos an und versuche mit den bereits gemachten Programmierungen immer etwas schlauer zu werden und meine "Projekte" umzusetzen.

Du kannst davon ausgehen, dass mich dies sehr, sehr viel Zeit kostet um überhaupt ein Ergebnis zu erreichen. Aber ich lerne stetig von der Community etc. dazu.

Ich hoffe dass du mir nun behilflich sein kannst.

Gruess
hifi11
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 20. Sep 2021, 09:08

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon slowboarder » 24. Sep 2021, 14:07

Der Code zum Verlassen der Userform ist Unload Me
Den Rest kann ich dir nicht sagen, da ich weder weiß, wie die Daten in der Userform hinterlegt sind um sie auslesen zu können, noch wie deine Tabelle aufgebaut ist, um dir sagen zu können wie du die Daten zurückschreiben musst.

Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28452
Registriert: 18. Apr 2009, 13:33

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon hifi11 » 24. Sep 2021, 15:04

Hallo Daniel

Anbei mein Dokument. Ich hoffe dass dies dir mehr Aufschluss gibt.

Gruess
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
hifi11
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 20. Sep 2021, 09:08

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon slowboarder » 27. Sep 2021, 12:22

im Prinzip so
Code: Alles auswählen
Private Sub cbo_Speichern_Click()

    Dim letztezeile As Integer
    Dim finden As Object
   
    letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ActiveSheet.Cells(letztezeile, 1).Value = txt_Objektnummer
    Set finden = Columns(1).Find(what:=txt_Objektnummer)
    If txt_Objektnummer <> "" Then
        Select Case MsgBox("Der Datensatz ist bereits vorhanden. Soll dieser überschrieben werden?", vbQuestion + vbYesNoCancel, "Datensatz speichern?")
            Case vbYes
               lbl_Zeitstempelanzeige = finden.Offset(0, 1)
                txt_5Rappenanzahl = finden.Offset(0, 2)
                lbl_5Rappenkassenstand = finden.Offset(0, 3)
                ... und für die weiteren Eingabefelder und Labels dann genauso
                Unload Me
            Case vbNo
               
            Case Else
                Unload Me
        End Select
    end if
End Sub
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28452
Registriert: 18. Apr 2009, 13:33

Re: Frage JaNeinAbbruch korrekt programmieren

Beitragvon hifi11 » 29. Sep 2021, 09:03

folgendes ist mir dabei aufgefallen

1. Die Daten werden nicht gespeichert
2. Trotz msgbox daten überschreiben mit Ja beantwortet, wird nicht überschrieben, sondern die Nummerierung wird einfach nochmals neu erstellt in einer neuen zeile.

Wie kann ich dies abfangen?
hifi11
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 20. Sep 2021, 09:08


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 34 Gäste