RISOLTO DA SOLO.
Ottimo! :-)
Sì, si può fare. Ma a me le finestre dei messaggi disturbano non poco... Ma se vuoi, vedremo.
Intanto però ti propongo una soluzione che mi pare più opportuna e meno invadente.
- Piazza un nuovo Pulsante di comando di nome cmdNew.
- Impostane la proprietà Enabled a False.
- Sostituisci il codice precedente con questo:
' Module: UserForm2
'
Option Explicit
Private Const mcstrFoglio As String = "Foglio1"
Private Const mcstrStart As String = "A4"
Private Const mcstrStop As String = "A81"
Private Const mcstrColST_ As String = "A"
Private Const mcstrColOgg As String = "B"
Private Const mcstrColRFR As String = "C"
Private Const mcstrColOwn As String = "D"
Private Const mcstrColApp As String = "E"
Private Const mcstrColAmb As String = "G"
Private Const mcstrColDat As String = "H"
Private Sub cmdInserisci_Click()
On Error GoTo ExtP
Dim wbk As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim r As Long
Dim ctl As MSForms.Control
Set wbk = Excel.Application.ThisWorkbook
Set wsh = wbk.Worksheets(mcstrFoglio)
With wsh
r = .Range(mcstrStop).End(xlUp).Row + 1
If r <= .Range(mcstrStart).Row Then
MsgBox "L'area dati è piena.", _
vbOKOnly Or vbExclamation, _
"Inserisci"
Else
.Range(mcstrColST_ & r).Value = Me.txtST.Value
.Range(mcstrColOgg & r).Value = Me.txtoggetto.Value
.Range(mcstrColRFR & r).Value = Me.txtRFR.Value
.Range(mcstrColOwn & r).Value = Me.cboowner.Value
.Range(mcstrColApp & r).Value = Me.cboapplicativo.Value
.Range(mcstrColAmb & r).Value = Me.cboambiente.Value
.Range(mcstrColDat & r).Value = Me.cbodata.Value
End If
End With
With Me
For Each ctl In .Controls
With ctl
If TypeName(ctl) = "CommandButton" Then
If ctl Is Me.cmdNew Then
.Enabled = True
.SetFocus
End If
Else
.Enabled = False
End If
End With
Next
.cmdInserisci.Enabled = False
End With
ExtP:
With Err
If .Number Then MsgBox .Description, _
vbOKOnly Or vbCritical, _
"ERRORE#" & .Number
End With
On Error Resume Next
Set ctl = Nothing
Set wsh = Nothing
Set wbk = Nothing
End Sub
Private Sub cmdNew_Click()
Dim ctl As MSForms.Control
With Me
For Each ctl In .Controls
With ctl
If TypeName(ctl) = "CommandButton" Then
If ctl Is Me.cmdInserisci Then .Enabled = True
Else
Select Case TypeName(ctl)
Case "ComboBox", "TextBox"
.Enabled = True
.Value = Null
Case "Label"
.Enabled = True
Case Else
' DO NOTHING
End Select
End If
End With
Next
.cmdNew.Enabled = False
.txtST.SetFocus
End With
Set ctl = Nothing
End Sub