Condividi tramite

inserire UserForm

Anonimo
2022-04-28T14:00:53+00:00

Buon giorno.

Vorrei realizzare quanto segue:

  1. In un foglio excel inserire:
1:1)  un User Form1 

 1:2)  nell’User Furm1  inserire un TextBox1 

 1:3)  al doppio Clik nel TextBox1 deve aprirsi un UserForm2. 
  1. L’userForm2 deve essere posizionato, sopra il form1, in un puto scelto a piacere.

2:1) il form2 mi restituisce una variabile xdata che deve riempire la TextBox1.

Ho provato con:

Private Sub UserForm_Activate()

 UserForm1.Left = 500 

 UserForm1.Top = 250 

 UserForm1.Height = 200 

 UserForm1.Width = 400      

 UserForm1.Show vbModeless 

End Sub

Private Sub TextBox1_Change()

TextBox1 = Format(TextBox1, "dd/mm/yyyy")

End Sub

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

 UserForm2.Left = 100 

 UserForm2.Top = 150 

 UserForm2.Height = 150 

 UserForm2.Width = 120 

 UserForm2.Show vbModeless 

 Uscite.Controls("TextBox1") = Xdata   

End Sub

Credo che per me sia troppo.

Potete darmi una mano.

Tante grazie.

Saluti.

Nunzio.

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
2022-04-30T10:43:16+00:00

Ciao Nunzio,

Grazie per la risposta.

Le dimensioni del Form1 iniziali erano indicati a caso.

Pensavo che la situazione non influisse su tutto il resto.

Mi scuso per non essere stato più preciso.

In ogni caso adesso è tutto perfetto come desideravo.

Un grossissimo grazie.

Come faccio ad assegnare alla textBox il valore di Xdata calcolato nel Form1.

A titolo di esempio, prova qualcosa del genere:

Nel modulo standard, incolla

'========>>

Option Explicit

Public dLeft As Double

Public dTop As Double

Public xData As Long

'-------->>

Public Sub showUF1()

UserForm1.Show vbModeless 

End Sub

'<<========

Nel modulo di codice della Userform1, incolla:

'========>>

Option Explicit

'-------->>

Private Sub UserForm_Initialize()

With Me 

    .StartUpPosition = 0 

    .Left = Application.Left 

    .Top = Application.Top 

    .Height = Application.Height 

    .Width = Application.Width 

End With 

End Sub

'-------->>

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

On Error Resume Next 

Unload UserForm2 

On Error GoTo 0 

dTop = 50 

dLeft = 150 

UserForm2.Show 

End Sub

'-------->>

Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Unload UserForm2 

dTop = 250 

dLeft = 500 

UserForm2.Show 

End Sub

'-------->>

Private Sub TextBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

On Error Resume Next 

Unload UserForm2 

dTop = 450 

dLeft = 800 

UserForm2.Show 

End Sub

'-------->>

Private Sub TextBox1_AfterUpdate()

Me.TextBox1 = Format(TextBox1, "dd/mm/yyyy")

End Sub

'-------->>

Private Sub TextBox2_AfterUpdate()

Me.TextBox2 = Format(TextBox2, "dd/mm/yyyy")

End Sub

'-------->>

Private Sub CommandButton1_Click()

**With Me** 

    **xData = DateValue(.TextBox1.Value) - DateValue(.TextBox2.Value)** 

**End With** 

End Sub

'<<========

Nel modulo di codice della seconda Userform, incolla:

'========>>

Option Explicit

'-------->>

Private Sub UserForm_Initialize()

With Me 

    .StartUpPosition = 0 

    .Left = dLeft 

    .Height = 350 

    .Width = 120 

    .Top = dTop 

    **.TextBox1.Value = xData** 

End With

End Sub

'<<========

Ho aggiornato il mio file di prova Giovanni20220429.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-04-29T13:04:41+00:00

    Ciao Norman.

    Potrebbe funzionare solo se il Form2 restasse posizionato sopra il form1.

    Attualmente il Form2 rimane nascosto sotto il Form1 che è grande quanto tutto il foglio.

    Grazie.

    Ciao.

    nunzio.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-04-29T08:15:19+00:00

    Ciao Nunzio,

    Grazie della risposta.

    Nel mio Form1 esistono diverse TextBox per cui mi servirebbe lanciare ed assegnare dimensioni

    e posizione del Form2 ( che sono sempre diverse) da ogni TextBox.

    E' possibile.

    Per dimostrare la selezione di tre diverse posizioni per la seconda Userform in base a quale di tre TextBox viene fatto doppio clic, prova quanto segue:

    Nel modulo standard, incolla:

    '========>>

    Option Explicit

    Public dLeft As Double

    Public dTop As Double

    '-------->>

    Public Sub showUF1()

    UserForm1.Show vbModeless 
    

    End Sub

    '<<========

    Nel modulo di codice della Userform1, incolla:

    '========>>

    Option Explicit

    '-------->>

    Private Sub UserForm_Initialize()

    With Me 
    
        .StartUpPosition = 0 
    
        .Left = 500 
    
        .Top = 450 
    
        .Height = 200 
    
        .Width = 400 
    
    End With 
    

    End Sub

    '-------->>

    Private Sub TextBox1_Change()

    Me.TextBox1 = Format(TextBox1, "dd/mm/yyyy") 
    

    End Sub

    '-------->>

    Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    Unload UserForm2 
    
    dTop = UserForm1.Top - 350 
    
    dLeft = Me.Left 
    
    UserForm2.Show vbModeless 
    

    End Sub

    '-------->>

    Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    Unload UserForm2 
    
    dTop = 250 
    
    dLeft = Me.Left + Me.Width 
    
    UserForm2.Show vbModeless 
    

    End Sub

    '-------->>

    Private Sub TextBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    Unload UserForm2 
    
    dTop = 150 
    
    dLeft = Me.Left - Me.Width 
    
    UserForm2.Show vbModeless 
    

    End Sub

    '<<========

    Nel modulo di codice della seconda Userform, incolla:

    '========>>

    Option Explicit

    '-------->>

    Private Sub UserForm_Initialize()

    With Me 
    
        .StartUpPosition = 0 
    
        .Left = dLeft 
    
        .Height = 350 
    
        .Width = 120 
    
        .Top = dTop 
    
    End With 
    

    End Sub

    '<<========

    Con questo codice la posizione della seconda Userform viene modificata ogni volta che si fa doppio clic su uno dei tre TextBox.

    Potresti scaricare il mio file di prova Giovanni20220429.xlsm

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-04-29T07:16:14+00:00

    Ciao Norman.

    Grazie della risposta.

    Nel mio Form1 esistono diverse TextBox per cui mi servirebbe lanciare ed assegnare dimensioni

    e posizione del Form2 ( che sono sempre diverse) da ogni TextBox.

    E' possibile.

    Grazie.

    Ciao.

    Nunzio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2022-04-28T16:03:18+00:00

    Ciao Nunzio,

    Vorrei realizzare quanto segue:

    1. In un foglio excel inserire:

    1:1) un User Form1

    1:2) nell’User Furm1 inserire un TextBox1

    1:3) al doppio Clik nel TextBox1 deve aprirsi un UserForm2.

    1. L’userForm2 deve essere posizionato, sopra il form1, in un puto scelto a piacere.

    2:1) il form2 mi restituisce una variabile xdata che deve riempire la TextBox1.

    Ho provato con:

    Private Sub UserForm_Activate()

    UserForm1.Left = 500

    UserForm1.Top = 250

    UserForm1.Height = 200

    UserForm1.Width = 400

    UserForm1.Show vbModeless

    End Sub

    Private Sub TextBox1_Change()

    TextBox1 = Format(TextBox1, "dd/mm/yyyy")

    End Sub

    Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    UserForm2.Left = 100

    UserForm2.Top = 150

    UserForm2.Height = 150

    UserForm2.Width = 120

    UserForm2.Show vbModeless

    Uscite.Controls("TextBox1") = Xdata

    End Sub

    Credo che per me sia troppo.

    In un modulo standard, incolla:

    '========>>

    Option Explicit

    '-------->>

    Public Sub showUF1()

    UserForm1.Show vbModeless 
    

    End Sub

    '<<========

    Nel modulo di codice della Userform1, incolla:

    '========>>

    Option Explicit

    '-------->>

    Private Sub UserForm_Initialize()

    With Me 
    
        .StartUpPosition = 0 
    
        .Left = 500 
    
        .Top = 450 
    
        .Height = 200 
    
        .Width = 400 
    
    End With 
    

    End Sub

    '-------->>

    Private Sub TextBox1_Change()

    Me.TextBox1 = Format(TextBox1, "dd/mm/yyyy") 
    

    End Sub

    '-------->>

    Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    UserForm2.Show vbModeless 
    

    End Sub

    '<<========

    Nel modulo di codice della seconda Userform, incolla:

    '========>>

    Option Explicit

    '<<--------

    Private Sub UserForm_Initialize()

    With Me

    .StartUpPosition = 0

     .Left = UserForm1.Left 
    
     .Height = 350 
    
     .Width = 120 
    
     .Top = UserForm1.Top - Me.Height 
    
     End With 
    

    End Sub

    '<<========

    Nel mio file di prova, ottengo qualcosa del genere:

     [![Immagine](https://learn-attachment.microsoft.com/api/attachments/72e294d7-ce20-499a-a272-e01589293af2?platform=QnA"https://learn-attachment.microsoft.com/api/attachments/d5484314-60f5-48a7-91a0-1fe369d5211a?platform=QnA" rel="ugc nofollow">Immagine

    La risposta è stata utile?

    0 commenti Nessun commento