Ciao Massimo,
visto che hai confermato la questione dell'area dati con limite inferiore questa modifica potrebbe essere opportuna:
' 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
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
ExtP:
With Err
If .Number Then MsgBox .Description, _
vbOKOnly Or vbCritical, _
"ERRORE#" & .Number
End With
On Error Resume Next
Set wsh = Nothing
Set wbk = Nothing
End Sub