Esercizio VB Popolare due ListBox a piu' colonne , inserimento Ciclo

Anonimo
2016-08-04T15:12:01+00:00

Buon Giorno a tutti

**** realizzato una UserForm  con due ListBox  , la ListBox1 carica le Etichette delle Colonne (Categorie) , con click su item in ListBox1 , Nella ListBox2 si carica l'elenco della colonna interessata .

(il database e' nel Foglio 1 )

Quindi in inserimento io clicco sulla Prima Categoria della ListBox1 ,si apre l'elenco relativo nella ListBox2 , seleziono il dato  e con il Pulsante (cmdBttn) copio il dato , ripeto il ciclo con la seconda categoria .... fino alla sesta  .

Le Categorie  (ListBox1)  sono 6  e i dati vengono salvati nel Foglio2 su una riga a partire dalla riga 3

      C3  Cognome    D3  Nome   E3 Data di Nascita   F3 Luogo di Nascita   G3  Indirizzo   H3 Residente

Il codice che incollo piu' sotto Funziona ....... pero'  solo nella riga 3  .... non sono capace di dargli l'istruzione ; dopo il sesto inserimento ... riparti da Capo .....  e inserisci i dati dalla prima riga  vuota  (C4,D4,E4,F4G4,H4 ....... )

Graditi  suggerimenti

Option Explicit

Dim sh As Worksheet, i As Long, elemento As String, p As String, posiz As String

Private Sub CommandButton1_Click()

UserForm1.Hide

End Sub

Private Sub ListBox1_Click()

posiz = (ListBox1.ListIndex + 0)

 i = 1

If ListBox2.ListCount >= 1 Then ListBox2.Clear

i = 2

Do Until Sheets("Foglio1").Cells(i, 1).Value = ""

With Sheets("Foglio1")

elemento = .Cells(i, posiz + 1)

End With

ListBox2.AddItem elemento

i = i + 1

Loop

End Sub

Private Sub ListBox2_Click()

    p = ListBox2.ListIndex + 3 

End Sub

Private Sub UserForm_Initialize()

If ListBox1.ListCount >= 1 Then ListBox1.Clear

i = 1

Do Until Sheets("Foglio1").Cells(1, i).Value = ""

With Sheets("Foglio1")

elemento = .Cells(1, i).Value

End With

ListBox1.AddItem elemento

i = i + 1

Loop

ListBox1.ListIndex = 0

End Sub

Private Sub CommandButton2_Click()

    i = 3

     Do Until Sheets("Foglio2").Cells(i, 1) = Empty

      i = i + 1

     Loop

  With Sheets("Foglio2")

  p = posiz

  posiz = i + 1

   .Cells(i, p + 3).Value = ListBox2.Text             

  End With

End Sub

E'  un Codice alla Frankestein , copiato,incollato,rappezzato .....pero'  funziona

GRAZIE     Claudio P

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-08-05T10:11:49+00:00

Il cicli Do non li utilizzo praticamente mai.

**** commentato il vecchio file riga per riga e aggiunto una Listbox popolata con un ciclo For:

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-08-05T09:08:13+00:00

    ciao Mauro

    ..... dove trovo esempi che utilizzano  sia le istruzioni  Do   che  For  ....

    ma sopratutto  dove posso vedere quali sono le sequenze corrette ??

    poi   quali sono le istruzioni che  dicono :

    Finto di scrivere la riga ....ricomincia da capo nella riga successiva ...

    Fai  finta che io sia un'aborigeno a cui hanno messo in mano  un smartphone .....

    Leggere i manuali e fare esercizi trovati online senza avere qualcuno che ti spiega dove sbagli ... e' un casino

    Comunque da Zero  a 1     e' sempre un bel Progresso

    GRAZIE     ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-08-04T18:11:22+00:00

    Ma la parte che ancora non **** incominciato ad utilizzare in maniera coerente  sono le istruzioni che creano un ciclo

    Non ho capito perché utilizzi Do e non For.

    Più semplice e intuitivo.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-08-04T17:57:56+00:00

    ciao  Mauro

    ....purtroppo ... un passo avanti  e poi uno indietro

    comunque ,  popolare una ListBox .... a parte il disordine , ci riesco , il Problema e come dare le istruzioni corrette perche'  al click nella ListBox1 , nella ListBox2 vengano caricati i dati delle colonne corrette

    Ma la parte che ancora non **** incominciato ad utilizzare in maniera coerente  sono le istruzioni che creano un ciclo

    Giuro che prestero' piu' attenzione .... le dichiarazioni !!!!     :-))

    Ciao   Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-08-04T15:28:28+00:00

    Visto che stai imparando.

    Immaginando che tu segua il forum, vedi mai Norman o il sottoscritto dichiarare le variabili su una sola riga?

    Dim sh As Worksheet, i As Long, elemento As String, p As String, posiz As String

    Non è più chiaro farlo così?

    Dim sh As Worksheet

    Dim i As Long

    Dim p As String

    Dim posiz As String

    Inoltre, non avevamo già popolato in modo più semplice la ListBox1?

    Torniamo indietro?

    La risposta è stata utile?

    0 commenti Nessun commento