Problema col ciclo while



  • Problema col ciclo while
    di Gugluca (utente non iscritto) data: 05/11/2009

    Ciao a tutti.. ho un ciclo while che mi scorre tutte le celle della colonna b finchè sono piene..
    se io volessi aggiungere una condizione, ossia: non leggere le righe che hanno la cella in colonna a vuota (ma b è piena)?
    es. a1 piena, b1 piena (il ciclo va avanti)
    a2 vuota, b1 piena (il ciclo non si interrompe, ma non fa nulla, salta la riga e passa alla riga 3)
    a3 piena, b3 piena (il ciclo va avanti)..
    a4(vuota o piena), b4 vuota (il ciclo si ferma)..

    come posso fare?
    grazie in anticipo..
    ciau!!




  • di Big ronnie (utente non iscritto) data: 05/11/2009

    Ciao gugluca,vedi se questo spunto ti può essere utile

    ciao big
     
    do while qualcosa .......
    if range("a" & tuo_contatore) = "" then goto Fine
    
    tue istruzioni nel caso la cella a fosse piena
    
    Fine:
    tuo_contatore = tuo_contatore + 1 
    loop



  • di Gugluca (utente non iscritto) data: 05/11/2009

    Grazie mille per la risposta!
    hai assolutamente ragione.. non ci avevo pensato.. il problema è che il ciclo mi apre un'altra macro:
     
    d = 8
    
    Do While xlss.Cells(d, 2) <> ""
      If Range("a" & d) = "" Then GoTo Fine
    
         Call compilazionedelfoglioutenti
    
      Fine:
      d = d + 1
       
    Loop



  • di Gugluca (utente non iscritto) data: 05/11/2009

    Ecco l'altra macro..
    con l'istruzione che ho messo, funziona bene per saltare le righe con la cella a vuota, però poi mi salta una riga si ed una no..
    ho il contatore d=d+1 duplicato, ma non so dove toglierlo o che altro fare..
    hai qualche consiglio?
    grazie ancora!
    ciau!

     
    Public Sub compilazionedelfoglioutenti()
    
    Dim vocebudget As String
    h = d
    
    vocebudget = xlss.Cells(d, 2)
    UserForm2.Caption = vocebudget
    i = 1
    Do
    continua = MsgBox("Ci sono nuovi progetti di " & vocebudget & "?", vbYesNo)
    
    If continua = vbYes Then
        UserForm2.Show
        
    
        xlss.Rows(d + i).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
        xlss.Cells(d + i, 2) = UserForm2.TextBox1
        xlss.Cells(d + i, 3) = CCur(UserForm2.TextBox2)
        UserForm2.TextBox1 = ""
        UserForm2.TextBox2 = ""
        UserForm2.TextBox1.SetFocus
        i = i + 1
        
    
    End If
    
    Loop Until continua <> vbYes
    
    d = d + i
    
    For r = h + 1 To h + i
        s = s + Cells(r, 3)
    Next r
    Cells(h, 3) = s
    
    
    End Sub



  • di Gugluca (utente non iscritto) data: 05/11/2009

    Ho risolto banalmente tagliando il contatore in fondo al loop della seconda macro (d=d+i) e inserendolo nella prima macro dopo il fine..

    grazie ancora per il tuo prezioso aiuto!!

    ciao!