Inputbox: Eingabeüberprüfung bei Klick auf OK - Schliessen verhindern bei Fehler

Igäl

Erfahrenes Mitglied
Liebe Leute

Einiges habe ich mir nun schon anschauen können, Vieles schon selber gefunden, aber trotzdem stehe ich mal wieder an.

Namentlich habe ich eine Inputbox, bei der ich - bei Klick auf "OK" - lediglich überprüfen will, dass kein leerer String mitgegeben wird. Das funktioniert eigentlich auch, sprich, es wird nichts ausgeführt, wenn keine Eingabe gemacht worden ist. Es erscheint meine Fehlermeldung, die dem User sagt, er soll gefälligst etwas eingeben.

Doch ich möchte ihm eigentlich die Möglichkeit geben, eine Eingabe zu machen. Die Inputbox schliesst jedoch nach dem Klick auf Okay und müsste neu geöffnet werden.

Wie kann ich das Schliessen derselben verhindern, bis eine Eingabe gemacht oder via Abbrechen die Box geschlossen wird?

Für eine bessere Überprüfung, als ich sie schon habe. Gibt es in VBA eine Funktion analog zur PHP-Funktion strlen()?

Danke für Inputs. Anbei der Code (für Kosmetiktipps bin ich dankbar):

Visual Basic:
'Funktion beim Klick auf den Button "Aktion erfassen"
Private Sub btnSetProject_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim caption As String
    Dim defProjectName As String
   
    Set db = CurrentDb

'    Code für Inputbox
    caption = "Definieren Sie einen Aktionsnamen"
    defProjectName = InputBox(caption, "Aktion")

'    Eintragen des Projektes und Abfangen von Leereingaben
    If defProjectName <> "" Then
        Set db = CurrentDb
        Set rs = db.OpenRecordset("tblProjects", dbOpenDynaset)

        rs.AddNew
        rs!txtProjectName = defProjectName
        rs.Update

        MsgBox ("Aktion '" & defProjectName & "' wurde erfolgreich angelegt!")
        Form_formSetProjectParam!btnSetProject.Enabled = False
        Form_formSetProjectParam!btnChangeProject.Visible = True
        setProjectNameToLabel
    Else
        If StrPtr(defProjectName) <> 0 Then
            MsgBox ("Bitte geben Sie einen Aktionsnamen ein.")
        End If
    End If
   
    db.Close
End Sub
 
Wirf die InputBox dahin, wo sie hingehört: in die Tonne.
Mach dir ne eigene Form, welche du dann eh komplett unter Kontrolle hast.

in 20 Jahren VBA hab ich nie das Ding genutzt. Immer eigene Form
 
Liebe Leute

Einiges habe ich mir nun schon anschauen können, Vieles schon selber gefunden, aber trotzdem stehe ich mal wieder an.

Namentlich habe ich eine Inputbox, bei der ich - bei Klick auf "OK" - lediglich überprüfen will, dass kein leerer String mitgegeben wird. Das funktioniert eigentlich auch, sprich, es wird nichts ausgeführt, wenn keine Eingabe gemacht worden ist. Es erscheint meine Fehlermeldung, die dem User sagt, er soll gefälligst etwas eingeben.

Doch ich möchte ihm eigentlich die Möglichkeit geben, eine Eingabe zu machen. Die Inputbox schliesst jedoch nach dem Klick auf Okay und müsste neu geöffnet werden.

Wie kann ich das Schliessen derselben verhindern, bis eine Eingabe gemacht oder via Abbrechen die Box geschlossen wird?

Für eine bessere Überprüfung, als ich sie schon habe. Gibt es in VBA eine Funktion analog zur PHP-Funktion strlen()?

Danke für Inputs. Anbei der Code (für Kosmetiktipps bin ich dankbar):

Visual Basic:
'Funktion beim Klick auf den Button "Aktion erfassen"
Private Sub btnSetProject_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim caption As String
    Dim defProjectName As String
  
    Set db = CurrentDb

'    Code für Inputbox
    caption = "Definieren Sie einen Aktionsnamen"
    defProjectName = InputBox(caption, "Aktion")

'    Eintragen des Projektes und Abfangen von Leereingaben
    If defProjectName <> "" Then
        Set db = CurrentDb
        Set rs = db.OpenRecordset("tblProjects", dbOpenDynaset)

        rs.AddNew
        rs!txtProjectName = defProjectName
        rs.Update

        MsgBox ("Aktion '" & defProjectName & "' wurde erfolgreich angelegt!")
        Form_formSetProjectParam!btnSetProject.Enabled = False
        Form_formSetProjectParam!btnChangeProject.Visible = True
        setProjectNameToLabel
    Else
        If StrPtr(defProjectName) <> 0 Then
            MsgBox ("Bitte geben Sie einen Aktionsnamen ein.")
        End If
    End If
  
    db.Close
End Sub
Funktioniert bei mir nicht, leider
 
Zurück