Condividi:        

Excel VBA Form

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel VBA Form

Postdi macio66 » 25/11/16 22:25

Buonasera
Ho un Form composta da 1 ComboBox 4 TestBox e 1 ListBox.
Volevo sapere se è possibile prima dell'inserimento dei dati compilati nella Form su di un foglio tramite un pulsante, controllare se il testo selezionato dalla ListBox è già presente nel foglio di destinazione (colonna D), e se già presente, avvisare con un messaggio che il dato è già presente e chiedermi di selezionarne un' altro.
E se possibile, quale è il codice da inserire.
Grazie
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Sponsor
 

Re: Excel VBA Form

Postdi patel » 26/11/16 09:02

allega un file di esempio, non è chiaro da dove prende i dati la listbox
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Excel VBA Form

Postdi macio66 » 26/11/16 10:43

Ciao patel
Questo è il file di esempio
http://www.filedropper.com/prova_5
la ListBox in questione è (ListBox3). Prende i dati dal foglio Rotazioni e viene inserita nel foglio Base colonna "F", tramite il CommandButton2. Ogni Attività non deve essere inserita più di una volta.
Per ora grazie x l'aiuto
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: Excel VBA Form

Postdi macio66 » 26/11/16 10:50

Ciao patel
Ti spiego come avviene l'inserimento.
Ogni bambino può fare 3 attività. Seleziono il nome del bambino, il numero dell'attività, l'attività da attribuire e premo il tasto registra.
Non so se come l'ho fatto è molto corretto, ma non sono molto esperto (di sicuro si capisce).
Ancora grazie x l'interessamento
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: Excel VBA Form

Postdi patel » 26/11/16 12:44

a me sembra che non funzioni l'inserimento delle attività, però forse non lo so usare, dovresti descrivere meglio le operazioni da fare e cosa ci si deve aspettare come risultato
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Excel VBA Form

Postdi macio66 » 26/11/16 18:47

Ciao Patel
Dal foglio Base seleziono il tasto "Dettagli" e si apre il Form.
Per un nuovo inserimento premo il tasto (vai a inserimento).
Seleziono per primo il nome dalla combobox, poi seleziono il numero di attività da inserire
(per esempio "1"), ed infine seleziono un'attività.
A questo punto clicco su Registra e mi inserisce i dati sul foglio base.
Perchè registri è importante che, sia il numero della listbox (n° attività), che l'attività della listbox (Elenco attività), siano evidenziate.
Spero di essere stato chiaro
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: Excel VBA Form

Postdi macio66 » 26/11/16 18:51

Ciao Patel
Ti domando ancora una cosa.
Nella ListBox (elenco attività), oltre alla colonna "A" delle attività, è possibile visualizzare anche la colonna "C".
Grazie
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: Excel VBA Form

Postdi Anthony47 » 27/11/16 03:05

Scusate se mi intrometto...
Nonostante la descrizione, mi sono fatto l'idea che stai cercando un modo per impedire che una attivita' sia inserita piu' di una volta; inoltre vorresti vedere in ListBox3, accanto all'attivita' (colonna A di Rotazioni), il contenuto di colonna C.

Per questo:
-modifica in Proprieta' di ListBox3 "Column Count" da 1 a 2
-modifica il codice di CommandButton1_Click in
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
Dim myList(), myInd As Long, I As Long
'
    With Me
    .Height = 530
    .Width = 900
    .StartUpPosition = 0
    .Left = 60
    .Top = 10
    End With
'
    ListBox3.Visible = True
    ListBox3.ListIndex = 0
    TextBox2.Visible = True
    Label15.Visible = True
    Label13.Visible = True
    TextBox3.Visible = True
    TextBox4.Visible = True
    TextBox5.Visible = True
    Label16.Visible = True
    Label17.Visible = True
    Label18.Visible = True
    CommandButton2.Visible = True
    CommandButton3.Visible = True
'Elimina RowSource:
ListBox3.RowSource = ""
'Calcola il contenuto di Listbox3:
With Sheets("ROTAZIONI").Range("A3:A56")
ReDim myList(1 To 2, 1 To .Count)
    For I = 1 To .Count
        If Application.WorksheetFunction.CountIf(Sheets("Base").Range("F1:F1000"), .Cells(I, 1)) = 0 Then
            myInd = myInd + 1
            myList(1, myInd) = .Cells(I, 1)
            myList(2, myInd) = .Cells(I, 3)
        End If
    Next I
ReDim Preserve myList(1 To 2, 1 To myInd)
ListBox3.List() = Application.WorksheetFunction.Transpose(myList)
End With

Come vedi il contenuto di ListBox non sara' prelevato dall'area ROTAZIONI!A3:A56, ma sara' popolato in modo dinamico con i soli valori non ancora presenti in Sheets("Base").Range("F1:F1000")
Questo impedira' alla base la doppia selezione. E' inoltre presentato nella seconda colonna del ListBox il dato di colonna C

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel VBA Form

Postdi macio66 » 27/11/16 10:24

Ciao Anthon.
Innanzitutto ti volevo ringraziare x il tuo interessamento (le vostre non sono mai delle intromissioni, ma ottimi aiuti).
Le modifiche da te suggerite, funzionano perfettamente.
Volevo chiedervi se è possibile oltre ad impedire il doppio inserimento delle attività, bloccare l'inserimento anche quando, l'indice di disabilità del ragazzo (TextBox1), corrisponde all'indice di disabilità dell'attività (TextBox2).
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59


Torna a Applicazioni Office Windows


Topic correlati a "Excel VBA Form":


Chi c’è in linea

Visitano il forum: Nessuno e 114 ospiti