Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Error Handling bei UserForm

Error Handling bei UserForm
19.07.2023 09:40:41
Georg
Liebe Mitglieder,
der Code macht was er soll bis auf die Tatsache, dass in der Userform alle Felder ausgefüllt werden müssen. (Um die Daten dann weiter verarbeiten zu lassen)
Leider ist meine Lösung nicht wirklich zielführend ab
Dim zaehler As Integer
With xSht
For zaehler = 2 To 9....
Die Message Box kommt zwar, wenn leer , aber mit OK läuft der Rest dann durch
Ich möchte aber, dass der Anwender wieder auf die Userform zurückkommt, um die fehlenden Felder ergänzen zu können. Finde leider keine Lösung hierzu.
Vielen Dank für eure Tipps schon mal vorab. Georg



Private Sub cmdDatatoSheet_Click()

Dim xSht As Object
Set xSht = ThisWorkbook.Worksheets("Austritte")

Dim RowNext As Long
'Die nächste freie Zeile mit den Daten aus der Userform befüllen --> Tab Austritte
With xSht

RowNext = xSht.Cells(Rows.Count, 2).End(xlUp).Row
RowNext = RowNext + 1

.Cells(RowNext, 2).Value = Me.BoxSB.Value
.Cells(RowNext, 3).Value = Me.txtName.Value
.Cells(RowNext, 4).Value = Me.txtVorname.Value
.Cells(RowNext, 5).Value = Me.txtAustritt.Value
.Cells(RowNext, 6).Value = Me.LBBereich.Value
.Cells(RowNext, 7).Value = Me.LBPosition.Value
.Cells(RowNext, 8).Value = "'" & Me.txtToken.Value
.Cells(RowNext, 9).Value = Me.BoxAustritt.Value

End With

Dim zaehler As Integer
With xSht
For zaehler = 2 To 9
If .Cells(RowNext, zaehler).Value = "" Then
MsgBox "Fehler! Sie haben nicht alle Felder ausgefüllt!", vbOKCancel

End If

Next
End With

'Was ist zu tun?:
Select Case BoxAustritt.ListIndex

Case Is = 0
xSht.Cells(RowNext, 10).Value = "Account ist zu löschen"


Case Is = 1
xSht.Cells(RowNext, 10).Value = "Account ist zu löschen falls angelegt"


Case Is = 2
xSht.Cells(RowNext, 10).Value = "Account ist zu deaktivieren"

End Select

'IXI Nummer freigeben
Select Case LBPosition.ListIndex

Case Is = 0
xSht.Cells(RowNext, 12).Value = "nein" 'MFA

Case Is = 1
xSht.Cells(RowNext, 12).Value = "nein" 'EK

Case Is = 2
xSht.Cells(RowNext, 12).Value = "nein" 'Agent

Case Is = 3
xSht.Cells(RowNext, 12).Value = "nein" 'SL

Case Else
xSht.Cells(RowNext, 12).Value = "ja" 'alle anderen

End Select

'Token löschen lassen:
Select Case LBPosition.ListIndex

Case Is = 0
xSht.Cells(RowNext, 11).Value = "nein" 'MFA

Case Is = 2
xSht.Cells(RowNext, 11).Value = "nein" 'Agent

Case Is = 3
xSht.Cells(RowNext, 11).Value = "teilweise ja" 'SL

Case Else
xSht.Cells(RowNext, 11).Value = "ja" 'alle anderen

End Select
Dim Bereich As Range
Set Bereich = xSht.Range(Cells(7, 2), Cells(RowNext, 15))
Bereich.RowHeight = 36

Unload Me

'frmMailKonto.Show

End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Error Handling bei UserForm
19.07.2023 09:59:53
Rudi Maintaire
Hallo,
prüfe die Textboxen vorher.
Private Sub cmdDatatoSheet_Click()
  
  Dim RowNext As Long
  Dim xSht As Worksheet
  Set xSht = ThisWorkbook.Worksheets("Austritte")
  
  
  'Felder prüfen
  Select Case True
    Case BoxSB = "", txtName = "", txtVorname = "", _
        txtAustritt = "", LBBereich = "", LBPosition = "", _
        txtToken = "", BoxAustritt = ""
      MsgBox "Fehler! Sie haben nicht alle Felder ausgefüllt!", vbOKOnly
      Exit Sub
  End Select
  
  'Die nächste freie Zeile mit den Daten aus der Userform befüllen --> Tab Austritte
  With xSht
    RowNext = xSht.Cells(Rows.Count, 2).End(xlUp).Row
    RowNext = RowNext + 1
    
    .Cells(RowNext, 2).Value = Me.BoxSB.Value
    .Cells(RowNext, 3).Value = Me.txtName.Value
    .Cells(RowNext, 4).Value = Me.txtVorname.Value
    .Cells(RowNext, 5).Value = Me.txtAustritt.Value
    .Cells(RowNext, 6).Value = Me.LBBereich.Value
    .Cells(RowNext, 7).Value = Me.LBPosition.Value
    .Cells(RowNext, 8).Value = "'" & Me.txtToken.Value
    .Cells(RowNext, 9).Value = Me.BoxAustritt.Value
    
  End With
  '****************************************
  'dein weiterer Code
End Sub
Gruß
Rudi

Anzeige
AW: Error Handling ... Rudi vielen Dank..
19.07.2023 11:49:05
Georg
hat wunderbar geklappt. Gruß G

AW: Error Handling bei UserForm
19.07.2023 11:03:21
snb
In VBA:

ThisWorkbook.sheets("Austritte").Cells(Rows.Count, 2).End(xlUp).offset(1).resize(,8)= array(BoxSB,txtName,txtVorname,txtAustritt,LBBereich,LBPosition,txtToken,BoxAustritt)

AW: Error Handling bei UserForm
19.07.2023 11:21:49
Daniel
Hi
du musst zuerst prüfen, ob alle Werte Textboxen befüllt sind und wenn nein, das Makro einfach ohne weitere Aktion beenden.
Dann bleibt die Userform offen, der Anwender kann die Daten ergänzen und den Vorgang wiederholen.

hier mal der Code für die Aktionen:
1. Prüfen ob alle Textboxen befüllt sind
2. Textboxen in die Zellen eintragen:

Dim arr

arr = Array(BoxSB.Value, xtName.Value, txtVorname.Value, txtAustritt.Value, LBBereich.Value, LBPosition.Value, Me.txtToken.Value, BoxAustritt.Value)

If "|" & Join(arr, "|") & "|" Like "||" Then
    MsgBox "Es sind noch nicht alle Felder befüllt"
    Exit Sub
End If

arr(6) = "'" & arr(6)

xSht.Cells(RowNext, 2).Resize(1, UBound(arr) + 1).Value = arr
Gruß Daniel

Anzeige
AW: Error Handling bei... Danke ... für eine
19.07.2023 11:52:57
Georg
weitere Lösung Gruß G

Kleine korrektur
19.07.2023 12:02:52
Daniel
da fehlen noch zwei *:

If "|" & Join(arr, "|") & "|" Like "*||*" Then

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige