
Originariamente inviata da
patel
prova a spostare l' Exit For sotto il msgbox, se non risolvi allega un file di esempio
Buongiorno di nuovo,
grazie per i riscontri (non è un esercizio didattico, purtroppo sono passati tanti anni da quando a fatica riuscii a sfangare l'esame di C++
)
Prendendo spunto dal suggerimento di patel e con un numero non definito di tentativi empirici direi che sono giunto ad una funzione che fa bene quello di cui ho bisogno, il gioco era appunto piazzare sia l'exit for sia l'exit sub nel punto giusto (almeno credo
).
Incollo il codice qua sotto sia perché magari viene utile a qualcun altro sia perché ogni possibile miglioria è ben accetta.
codice:
Sub Aggiungi()Dim Nam, Sur, z, d
Dim us As Long
Set Nam = UserForm1.TextBox1
Set Sur = UserForm1.TextBox2
Set z = Sheets("Sheet1").Range("c2:c150").Find(Sur)
If UserForm1.TextBox1 = "" Or UserForm1.TextBox2 = "" Then
MsgBox ("Compila i campi")
Else
If z Is Nothing Then
ur = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("C" & ur + 1).Value = Sur
Sheets("Sheet1").Range("B" & ur + 1).Value = Nam
Else
For Each z In Sheets("Sheet1").Range("c2:c150")
If Sheets("Sheet1").Cells(z.Row, "B") = Nam And Sheets("Sheet1").Cells(z.Row, "C") = Sur Then
MsgBox ("Nominativo esistente")
Exit Sub
Exit For
End If
Next
ur = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("C" & ur + 1).Value = Sur
Sheets("Sheet1").Range("B" & ur + 1).Value = Nam
MsgBox ("Nominativo creato")
End If
End If
End Sub
Cercando in rete ho anche trovato utile mettere in cima al modulo
codice:
Option Compare Text
così da rendere la funzione case insensitive.
Grazie e buona giornata,
TheNoobest