Condividi tramite

Maschera di input

Anonimo
2014-05-08T10:34:59+00:00

Buongiorno,

per un semplice vezzo estetico, volevo sapere se è possibile creare una maschera del genere in Excel che memorizza i valori anziché 3 input box tramite macro. Grazie! A

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
2014-05-10T10:14:46+00:00

Devo inserire il codice PFPCTV0125, nella maschera inizio a scrivere P e il menu a tendina sottostante propone tutti i codici che iniziano con P, quindi scrivo F e il menu a tendina sottostante propone tutti i codici che iniziano con PF, quindi scrivo P e il menu a tendina sottostante propone tutti i codici che iniziano con PFP etc...

In italiano, vedi questa discussione e l'esempio postato allora:

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-05-10T08:37:03+00:00

Ooooh cavolo queste user form sono STUPENDE!!!!!

Comunque, nel caso della mia maschera ho visto che è possibile selezionare un oggetto da un menu a tendina, ad esempio, sapendo quali sono le macchina posso scegliere la macchina da una delle presenti; inoltre ho sentito parlare di auto-completamento dei termini e comincia a piacermi ma avrei un dubbio che ancora non è stato risolto: Vorrei fondere il menu a tendina con l'auto-completamento....

Faccio un esempio:

Devo inserire il codice PFPCTV0125, nella maschera inizio a scrivere P e il menu a tendina sottostante propone tutti i codici che iniziano con P, quindi scrivo F e il menu a tendina sottostante propone tutti i codici che iniziano con PF, quindi scrivo P e il menu a tendina sottostante propone tutti i codici che iniziano con PFP etc...

L'idea è questa volevo sapere se si può fare, se non si riesce amen.

GRAZIE!!!!!!

A

Ciao Alberto,

Sono lieto che il mio esempio ha stimolato il tuo interesse nel l'uso delle  UserForm!

Per quanto riguarda l'autocompletamento, vedi la proprietà MatchEntry nella guida del VBA. 

Questa è una proprietà degli oggetti ListBox e ComboBox. Più in particolare, la proprietà MatchEntry accetta un valore di FmMatchEntryComplete che fornisce la funzionalità che tu cerchi. Per ottenere questa funzionalità, la sintassi richiesta sarebbe del genere:

         ComboBox1.MatchEntry = fmMatchEntryComplete

Per vedere esempi e istruzioni per l'attuazione di un tale controllo ComboBox per la convalida dati, e per scaricare un file di esempio, vedi Debra Dalgleish a:

                         http://www.contextures.com/xlDataVal10.html

Come esemplificato, tra l'altro, dal link fornito da Andrea. ti farei notare comunque che l'uso del ComboBox o un Listbox e una UserForm non si escludono a vicenda!

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

11 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-05-09T02:50:26+00:00

    Penso una semplice Userform soddisfi le tue esigenze.

    Ciao Alberto, 

    Mi rendo conto  che con una mia risposta del genere potrebbe provocare una risposta del tipo:

    Senza offesa ma se avessi saputo già come si faceva   :-))

    Pertanto, come uno spinto prova come segue:

    Sul foglio di interesse,****inserisci un CommandButton. Fai Clic dx sul pulsante e sostituisci il codice visualizzato con:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub CommandButton1_Click()

        UserForm1.Show vbModeless

    End Sub

    '<<=========

    Alt-IU per inserire una Userform nel progetto.

    Fai clic dx sulla Userform | Visualizza Codice  per aprire il suo modulo di codice e incolla il seguente codice:

    '==========>>

    Option Explicit

    Dim myButton As New Class1          '<<===== Eventualmente, modifica: vedi ^[1]^ **** di sotto

    '--------->>

    Private Sub UserForm_Initialize()

        Dim TBox As Control

        Dim MyLabel As Control

        Dim aLabel As Control

        Dim cButton As Control

        Dim i As Long

        Dim iTop As Long

        Dim arrCaptions As Variant

        Const sCaptions As String = "Ordine, Codice,Macchina"

        arrCaptions = Split(sCaptions, ",")

        With Me

            .Height = 150

            .Width = 150

            .Caption = "Maschera Alberto"

        End With

        Set aLabel = Me.Controls.Add("Forms.Label.1", "titleLabel")

        With aLabel

            .Left = Me.Left + Me.Width / 3

            .Top = Me.Top + 2

            .Height = 15

            .Width = 80

            .Caption = "Inserisci"

            .Font.Size = 15

        End With

        iTop = aLabel.Height

        For i = 1 To 3

            Set TBox = Me.Controls.Add("Forms.Textbox.1", "myTbox" & i)

            iTop = iTop + 15

            With TBox

                .Left = 45

                .Top = iTop

                .Width = 80

                .Height = 15

            End With

            Set MyLabel = Me.Controls.Add("Forms.Label.1", "myLabel" & i)

            With MyLabel

                .Left = 5

                .Top = iTop + 5

                .Height = 20

                .Width = 35

                .Caption = arrCaptions(i - 1)

            End With

            iTop = iTop + 10

        Next i

        Set cButton = Me.Controls.Add("Forms.CommandButton.1")

        With cButton

            .Height = 20

            .Top = iTop + 10

            .Width = 60

            .Left = Me.Width - .Width - 10

            .Caption = " Inserisci dati"

        End With

     Set myButton.myButtonEvents = cButton

    End Sub

    '==========>>

    Alt-IC per inserire un modulo del tipo Class (nominato Class1); Nel caso il modulo avessi un nome diverso, modifica Class1, al punto ^[1]^ di sopra, al nome di questo modulo. 

    Nel modulo, incolla il seguente codice:

    '==========>>

    Option Explicit

    Public WithEvents myButtonEvents As MSForms.CommandButton

    '--------->>

    Private Sub myButtonEvents_Click()

        Call myButtonCode

    End Sub

    '<<==========

    Alt-IM per inserire un nuovo modulo di codice

    Nel nuovo modulo vuoto, incolla il seguente codice:

    '==========>>

    Option Explicit

    '---------->>

    Public Sub myButtonCode()

        Dim SH As Worksheet

        Dim Rng As Range

        Dim iRow As Long

        Dim Ctrl As MSForms.Control

        Set SH = ActiveSheet

        With SH

            iRow = LastRow(SH, Range("A:A"))

            Set Rng = .Range("A" & iRow + 1)

        End With

        With UserForm1.Controls

            Rng.Cells(1, 1).Value = .Item("myTbox1").Value

            .Item("myTbox1").Value = vbNullString

            With .Item("myTbox2")

                If IsDate(.Value) Then

                    Rng(1, 2).Value = CDate(.Value)

                Else

                    Rng(1, 2).Value = .Value

                End If

                 .Value = vbNullString

            End With

            Rng(1, 3).Value = .Item("myTbox3").Value

            .Item("myTbox3").Value = vbNullString

        End With

    End Sub

    '---------->>

    Function LastRow(SH As Worksheet, _

                     Optional Rng As Range)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

                           After:=Rng.Cells(1), _

                           Lookat:=xlPart, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows, _

                           SearchDirection:=xlPrevious, _

                           MatchCase:=False).Row

        On Error GoTo 0

    End Function

    '<<==========

    Alt-Q per chiudere l'editor di VBA e tornare a Excel.

    Ora, prova il pulsante. 

    Come è scritto il codice, i valori inseriti nelle tre caselle di testo della Userform form verranno inseriti nelle prime celle vuote nelle colonne A:C del foglio.

    In questo esempio, la Userform, i suoi controlli e il codice evento sono creati a runtime (in fase di esecuzione). Più normalmente, la Userform , i controlli e il codice sarebbero progettati \ creati in anticipo, ma spero che questo almeno possa fornirti alcune idee.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-05-08T13:55:00+00:00

    Buongiorno,

    per un semplice vezzo estetico, volevo sapere se è possibile creare una maschera del genere in Excel che memorizza i valori anziché 3 input box tramite macro. Grazie! A

    Vedi qui, link a siti/wiki compresi:

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-05-08T12:49:39+00:00

    Ciao Alberto,

    Penso una semplice Userform soddisfi le tue esigenze.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento