Domanda.

nome=Aurelio
cognome=Rosa
versione=excel 2000
conosco2=medio
email=aureliorosa@libero.it
chra=6
problema=Non riesco a inserire un elenco tramite TextBox inserita in una UserForm perchè il programma mi si blocca all'istruzione Selection.End . Compare la dicitura "errore di run-time 10024 : errore definito dall'applicazione o dall'oggetto".Io dovrei inserire degli itinerari (partenza- arrivo e Km fatti) in modo poi
che possa,digitando partenza e arrivo, avere inseriti i km per fare il conteggio a fine mese. Questo è il "listato", come devo
fare?

Aurelio


Private Sub CommandButton1_Click()
If TextBox1 = "" Then
MsgBox "Bisogna inserire la partenza"
TextBox1.SetFocus
Exit Sub
End If
Sheets("ITINERARI").Select
Range("A1").Select
Selection.End(x1Down).Select
ActiveCell.Offset(1, 0).Select
ActiveCell = TextBox1.Text
ActiveCell.Offset(0, 1) = TextBox2.Text
ActiveCell.Offset(0, 2) = TextBox3.Text
Sheets("FOGLIO VIAGGI").Select
End Sub

Private Sub CommandButton2_Click()
Unload Me
Set UserForm1 = Nothing
End Sub

 

Risposta.

salve Aurelio, l'errore ti viene perchè con End impostato così vai a finire a fine foglio e con Offset(1, 0) in pratica vorresti andare oltre il limite del foglio.
L'istruzione End cerca l'ultima cella occupata dalla cella fornita come inizio (A1 nel tuo caso). Se la cella A1 è vuota, lui finisce a fine foglio con la conseguenza dell'errore di run-time. Ti riporto un'estratto dall'articolo "Copia/Incolla2" dove spiego come si può agire in questi casi:
"..L'accorgimento consiste nel tenere le prime due celle A1 e A2 occupate,
con un qualsiasi valore, tipo un intestazione colonna, e indicare nel codice
a questo punto la cella A1 come cella da selezionare per iniziare il ciclo.
Poichè l'istruzione ora si fermerebbe alla cella A2, e noi invece cerchiamo una riga vuota, aggiungiamo l'istruzione "Offset" che sposta la selezione sulla cella sottostante, la A3 (vuota), e qui avviene l'incollaggio."
Per te anzichè incollaggio, si tratta di inserire il contenuto di textbox,
ma il concetto non cambia.
Oppure anzichè End usa un ciclo While che cerchi la prima cella libera, e di esempi con While i due siti sono pieni.
saluti, ennius