dopo lutilizzo delle collection




  • di scossa data: 24/03/2015 10:33:11

    Ciao,

    in ComboBox1_Change devi spostare l'istruzione
    Me.ComboBox2.Clear
    prima di
    Set sh = ThisWorkbook.Worksheets("Foglio2")

    in ComboBox2_Change sposta
    Me.ComboBox3.Clear
    prima di
    Set sh = ThisWorkbook.Worksheets("Foglio2")


    Questo perché l'istruzione .Clear fa eseguire la routine di evento _Change che contiene alla fine l'istruzione set sh = nothing e poiché hai dichiarato sh come privata, l'istruzione
    Set sh = ThisWorkbook.Worksheets("Foglio2") va eseguita dopo .Clear altrimenti sh è nothing.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di efarre data: 24/03/2015 12:00:26

    Grazie della risposta al primo quesito.
    adesso l'errore non compare più.
    per il secondo quesito rimango in attesa di aiuto.
    Ancora grazie
    Enzo Farre



  • di scossa data: 24/03/2015 14:31:13

    Sostituisci la Sub ComboBox3_Change con il codice sottostante.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

     
    Private Sub ComboBox3_Change()
      Dim nRow As Long
      Dim rng As Range
      
      Set sh = ThisWorkbook.Worksheets("Foglio2")
      With sh
          nRow = .Range("C" & .Rows.Count).End(xlUp).Row
          Set rng = .Range("C2:C" & nRow).Find(ComboBox3.Value)
          If Not rng Is Nothing Then TextBox1 = rng.Offset(0, 1).Value
      End With
      Set sh = Nothing
      Set rng = Nothing
    End Sub
    



  • di efarre data: 24/03/2015 16:09:12

    Ok funziona benissimo, ma non la capisco.

    qui conto il numero delle righe in colonna C
    ---- nRow = .Range("C" & .Rows.Count).End(xlUp).Row

    qui imposto il range sul quale cercare il valore della ComboBox3
    ---- Set rng = .Range("C2:C" & nRow).Find(ComboBox3.Value)

    questa non la capisco (SE IL RANGE NON E' NOTHING allora TextBox1 deve essere popolato dal valore presente nella cella stessa riga colonna successiva)

    ---- If Not rng Is Nothing Then TextBox1 = rng.Offset(0, 1).Value

    me la puoi spiegare?

    Grazie mille per l'aiuto.

    Enzo Farre



  • di scossa data: 24/03/2015 16:22:24

    cit. efarre: "questa non la capisco (SE IL RANGE NON E' NOTHING allora TextBox1 deve essere popolato dal valore presente nella cella stessa riga colonna successiva) "

    A me pare che tu l'abbia capita, visto che fa esattamente quello che hai scritto tra le parentesi

    Se il metodo .Find non trova una corrispondenza restituirà Nothing, mentre se trova una corrispondenza restituirà la cella a destra della cella dove il valore è stato trovato ......

    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di efarre data: 24/03/2015 16:27:50

    era il not con nothing che mi confondeva.
    Comunque grazie ancora
    chiudo la discussione

    Enzo