Condividi tramite

Determinare il TextBox attivo di una UserForm

Anonimo
2016-01-20T13:51:40+00:00

Buongiorno,

ho creato una UserForm per l'inserimento dei dati in un file excel.

Grazie a dei suggerimenti trovati su internet sono riuscito a fare in modo che, quando clicco su un "TextBox" specifico si apra un Calendario e a fare in modo che cliccando su di esso la data selezionata venga riportata nel campo della mia UserForm tramite questo codice:

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)

    On Error Resume Next

    FrmCiao!Text3.Value = DateClicked

    Unload Me

End Sub

Siccome ho altri campi data, sarebbe utile sfruttare la stessa UserForm Calendar ma fare in modo che, a seconda della textbox che ne ha chiesto l'apertura venga memorizzato il dato.

Mi servirebbe un controllo per determinare in quale TextBox ho cliccato prima di aprire il calendario.

Il calendario si apre grazie a questo codice:

Private Sub Text3_Enter()

Calendar.Show

End Sub

Per intenderci mi servirebbe qualcosa tipo questa:

 ActiveCell.Value (valida se volessi memorizzata l'informazione nella cella di excel)

ma riferita alla user form.

Spero possiate aiutarmi.

Grazie.

Salut,

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

Anonimo
2016-01-20T17:59:33+00:00

Inverti il problema. Per rendere attiva la TextBox nella UserForm1, dovrai selezionarla, no?

Quindi quando entri nella UserForm, passa il suo nome ad una variabile Public in un modulo standard, ad esempio:


'Modulo Standard:

Public sNomeTextBox As String


'UserForm1 Codice (dove ho 3 TextBox):

Private Sub TextBox1_Enter()

    sNomeTextBox = "TextBox1"

End Sub

Private Sub TextBox2_Enter()

    sNomeTextBox = "TextBox2"

End Sub

Private Sub TextBox3_Enter()

    sNomeTextBox = "TextBox3"

End Sub


'UserForm2 Codice (dove ho un semplice pulsante che scrive Ciao nella TextBox attiva):

Private Sub CommandButton1_Click()

    UserForm1.Controls(sNomeTextBox).Text = "Ciao"

End Sub

La risposta è stata utile?

0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-01-20T17:42:31+00:00

    Esatto devo passare il valore selezionato in un text box della User Form1 che è aperta. La mia esigenza è quella di usare la stesa UserForm 2 ( da dove si seleziona il valore) per i diversi text box della Form1. Se usassi il codice da te proposto dovrei creare tante user form quanti sono i text bobox della form1. Se invece riuscissi a dire nella form2 di buttare il valore nel text box attivo della form 1 sarebbe perfetto. 

    Grazie ancora.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-20T15:11:04+00:00

    Quindi non ho capito io.

    Devi passare il valore selezionato ad una TextBox che si trova in altra UserForm?

    Le due UserForm sono entrambe aperte? Se così in UserForm1, in qualche evento:

    UserForm2.TextBox1.Text = il_valore_che_devi_passare

    Scrive nella TextBox1 della UserForm2


    Se invece devi passare il valore dalla UserForm1 alla UserForm2 che è chiusa, in un modulo standard crea una variabile Public tipo:

    Public abc As Date

    Quindi quando chiudi la UserForm1 nell'evento Initialize della UserForm2 popola la TextBox:

    Private Sub UserForm_Initialize()

        Me.TextBox1.Text = abc

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-01-20T14:45:43+00:00

    Ciao,

    purtroppo non sono espertissimo di VBA e non riesco a capire la soluzione.

    Il problema non è tanto aprire la user form calendar, bensì fare in modo che con l'evento click sulla userform calendar la data venga memorizzata nel text box attivo dell'altra userform...

    In pratica la soluzione "semplice" sarebbe quella di create tante UserForm "Calender" quanti sono I campi data nella mia UserForm base.

    Penso che ci sia qualcosa del tipo

    FrmCiao!ActiveTextbox.Value = DateClicked

    Grazie ancora.

    Saluti.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-01-20T14:03:53+00:00

    La risposta è stata utile?

    0 commenti Nessun commento