Condividi tramite

UserForm per inserire dati

Anonimo
2012-05-13T07:50:33+00:00

Ciao a tutti,

Ancora una volta ho bisogno del vostro aiuto per poter inserire dei dati tramite una userform nel foglio che rendo attivo.

Nel file pubblicato qui: https://skydrive.live.com/?sc=documents&cid=10afbffc368444d4#cid=10AFBFFC368444D4&id=10AFBFFC368444D4%21113&sc=documents ho numerato le TextBox indicando nell’intestazione anche le colonne dove trasferire i dati. Le TextBox1, 4, 7 e 10 riportano tutte lo stesso giorno, solo la 14 può avere un giorno diverso, i dati devono finire nella colonna A.

Le TextBox2, 5, 8, 12 e 15 riportano il codice in lettera maiuscola e i dati devono finire nella colonna E.

Le TextBox3, 6 e 9 riportano cifre con decimali con i valori che finiscono nella colonna F, mentre le  TextBox13 e 16 sempre valori con decimali devono finire nella colonna G. L’ultima è la TextBox11 dove scrivo le informazioni che devono finire nella colonna B.

Come da esempio, ogni serie di TextBox deve formare una riga nel foglio che vado a riempire. Veniamo alla parte difficile:

1)Potrebbe succedere ad esempio che le TextBox1, 2 e 3 oppure 7, 8 e 9 non riportino nessun valore quindi non devono essere registrate ma saltate.

  1. E’ possibile stabilire in anticipo ad esempio se inserisco il valore in una delle TextBox3, 6, 9, 13 o 16  mi inserisce il codice (che ho riportato nella cartella che ho pubblicato) nella colonna E del Foglio eliminando quindi le TextBox2, 5, 8, 12 e 13?
  2. Visto che le TextBox 1, 4, 7 e 10 includono lo stesso giorno si può fare in modo che una volta inserito alla TextBox1 il giorno finisca in automatico alle TextBox4, 7 e 13?

Spero di aver spiegato bene quello che mi servirebbe, comunque il file pubblicato potrebbe rendere meglio l’idea con la UserForm che mostra sul foglio dove devono finire i valori.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2012-05-16T05:28:19+00:00

    Cerco di spiegarmi meglio:

    <cut>

    Non ho capito se i dati vanno di volta in volta accodati. Se sì, questa lo fa nel Foglio1(modifica nel caso con il nome del tuo foglio):

    Private Sub CommandButton1_Click()

        Dim sh As Worksheet

        Dim lRiga As Long

        Dim s As String

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        lRiga = sh.Range("A" & sh.Rows.Count).End(xlUp).Row + 1

        With Me

            s = .TextBox1.Text & TextBox2.Text & TextBox3.Text

            If s <> "" Then

                sh.Range("A" & lRiga).Value = .TextBox1.Text

                sh.Range("E" & lRiga).Value = .TextBox2.Text

                sh.Range("F" & lRiga).Value = CDbl(.TextBox3.Text)

                lRiga = lRiga + 1

                s = ""

            End If

            s = .TextBox4.Text & TextBox5.Text & TextBox6.Text

            If s <> "" Then

                sh.Range("A" & lRiga).Value = .TextBox4.Text

                sh.Range("E" & lRiga).Value = .TextBox5.Text

                sh.Range("F" & lRiga).Value = CDbl(.TextBox6.Text)

                lRiga = lRiga + 1

            End If

            s = .TextBox7.Text & TextBox8.Text & TextBox9.Text

            If s <> "" Then

                sh.Range("A" & lRiga).Value = .TextBox7.Text

                sh.Range("E" & lRiga).Value = .TextBox8.Text

                sh.Range("F" & lRiga).Value = CDbl(.TextBox9.Text)

                lRiga = lRiga + 1

            End If

            s = .TextBox10.Text & TextBox11.Text & TextBox12.Text & TextBox13.Text

            If s <> "" Then

                sh.Range("A" & lRiga).Value = .TextBox10.Text

                sh.Range("B" & lRiga).Value = .TextBox11.Text

                sh.Range("E" & lRiga).Value = .TextBox12.Text

                sh.Range("G" & lRiga).Value = CDbl(.TextBox13.Text)

                lRiga = lRiga + 1

            End If

            s = .TextBox14.Text & TextBox15.Text & TextBox16.Text

            If s <> "" Then

                sh.Range("A" & lRiga).Value = .TextBox14.Text

                sh.Range("E" & lRiga).Value = .TextBox15.Text

                sh.Range("G" & lRiga).Value = CDbl(.TextBox16.Text)

            End If

        End With

        Set sh = Nothing

    End Sub

    NOTA. Formatta le colonne F e G per avere valori numerici con 2 decimali. Inutile farlo da codice!

    Se invece devi fare questa cosa ogni volta singolarmente sul foglio attivo:

    Private Sub CommandButton1_Click()

        Dim lRiga As Long

        Dim s As String

        lRiga = 2

        With Me

            s = .TextBox1.Text & TextBox2.Text & TextBox3.Text

            If s <> "" Then

                ActiveSheet.Range("A" & lRiga).Value = .TextBox1.Text

                ActiveSheet.Range("E" & lRiga).Value = .TextBox2.Text

                ActiveSheet.Range("F" & lRiga).Value = CDbl(.TextBox3.Text)

                lRiga = lRiga + 1

                s = ""

            End If

            s = .TextBox4.Text & TextBox5.Text & TextBox6.Text

            If s <> "" Then

                ActiveSheet.Range("A" & lRiga).Value = .TextBox4.Text

                ActiveSheet.Range("E" & lRiga).Value = .TextBox5.Text

                ActiveSheet.Range("F" & lRiga).Value = CDbl(.TextBox6.Text)

                lRiga = lRiga + 1

            End If

            s = .TextBox7.Text & TextBox8.Text & TextBox9.Text

            If s <> "" Then

                ActiveSheet.Range("A" & lRiga).Value = .TextBox7.Text

                ActiveSheet.Range("E" & lRiga).Value = .TextBox8.Text

                ActiveSheet.Range("F" & lRiga).Value = CDbl(.TextBox9.Text)

                lRiga = lRiga + 1

            End If

            s = .TextBox10.Text & TextBox11.Text & TextBox12.Text & TextBox13.Text

            If s <> "" Then

                ActiveSheet.Range("A" & lRiga).Value = .TextBox10.Text

                ActiveSheet.Range("B" & lRiga).Value = .TextBox11.Text

                ActiveSheet.Range("E" & lRiga).Value = .TextBox12.Text

                ActiveSheet.Range("G" & lRiga).Value = CDbl(.TextBox13.Text)

                lRiga = lRiga + 1

            End If

            s = .TextBox14.Text & TextBox15.Text & TextBox16.Text

            If s <> "" Then

                ActiveSheet.Range("A" & lRiga).Value = .TextBox14.Text

                ActiveSheet.Range("E" & lRiga).Value = .TextBox15.Text

                ActiveSheet.Range("G" & lRiga).Value = CDbl(.TextBox16.Text)

            End If

        End With

    End Sub

    Fai sapere partendo da qui cosa va e non va.

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento

23 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-05-13T15:36:54+00:00

    scusami, non mi ero accorto del link inserito all'inizio del post, forse sarebbe meglio cancellare i miei interventi

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  3. Anonimo
    2012-05-13T12:22:57+00:00

    caricalo qui http://wikisend.com/ ed allega il lnk

    No.

    Giustamente Guidor lo ha messo a disposizione su Skydrive, la soluzione consigliata su questo forum.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-05-13T11:22:09+00:00

    caricalo qui http://wikisend.com/ ed allega il lnk

    La risposta è stata utile?

    0 commenti Nessun commento