Condividi tramite

trasferire il valore di un range di celle in textbox

Anonimo
2018-03-31T17:56:29+00:00

Buongiorno a tutti, ipotizzando di avere un range di celle A1:F30 come posso visualizzare il valore di tali celle in altrettante textbox di una userform, magari utilizzando un ciclo per risparmiare righe di codice.

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
    2018-03-31T19:40:13+00:00

    Ciao fabbristeve,

    in questo file è presente una userform dove vengono caricati i valori presenti nell'intervallo A1:F30 in altrettante textbox nominate da TextBox1, TextBox2, TextBox3 .... ecc.

    Nell'esempio le TextBox vengono aggiunte "dinamicamente" quando la userform viene "inizializzata".

    Ovviamente tu potresti prima creare manualmente le textbox nominandole TextBox1, ecc.

    Qui il file di esempio:

    File Esempio

    Questo il codice presente nel modulo della UserForm:

    '---

    Option Explicit

    Private Sub UserForm_Initialize()

       Dim rng As Range

       Dim NumRec As Long, NumCol As Long

       Dim cont As Long, i As Long, j As Long

       Dim TxtControl As MSForms.TextBox

    Dim iTop As Long, iLeft As Long

    Dim iWidth As Double

       'imposto l'intervallo celle

       Set rng = ThisWorkbook.Worksheets("Foglio1").Range("A1:F30")

       With rng

          'determino il numero di righe e colonne per eseguire il ciclo

          NumRec = .Rows.Count

          NumCol = .Columns.Count

       End With

       With Me

      .Width = 350

    iWidth = (((.InsideWidth - (5 * NumCol)) - 5) / NumCol)

    iLeft = 5

    iTop = 5

             'inizio il ciclo per popolare le TextBox (che in questo caso vengono aggiunte dinamicamente)

             For i = 1 To NumRec

                For j = 1 To NumCol

                   cont = cont + 1

     .Controls.Add "Forms.TextBox.1", "TextBox" & cont, True

    With .Controls("TextBox" & cont)

    .Width = iWidth

    .Height = 20

    .Left = iLeft

    .Top = iTop

    iLeft = iLeft + iWidth + 5

    End With

                   'inserimento valori nel text box in base alla posizione della cella

                   .Controls("TextBox" & cont).Text = rng(i, j).Value

                Next j

     iTop = iTop + 25

    iLeft = 5

         Next i

       End With

    End Sub

    '---

    Vedi se può darti qualche idea in relazione al tuo progetto effettivo.

    Edit: ho impostato in corsivo la parti che non sarebbero necessarie in caso di TextBox inseriti manualmente nella userform.

    4 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2018-04-01T05:51:29+00:00

    ciao casanmaner, 

    è esattamente quello che cercavo per il mio progetto, inoltre è stato utile e formativo l'esempio di come aggiungere dinamicamente le textbox

    grazie

    0 commenti Nessun commento