Ciclo for vba



  • Ciclo for vba
    di Mauro (utente non iscritto) data: 12/02/2010

    Ciao a tutti!
    cercherò di descrivervi nella maniera più chiara possibile il mio problema, sperando in un aiuto.
    dato un valore s1 ottengo t1 tramite un if(s1<=s;cella1;cella2).
    cella1 contiene una formula con s1
    dato un valore q1 ottengo sg1; trovato sg1 ottengo es1 tramite un if(sg1<=sd;cella3;cella4).
    cella3 e cella4 contengono entrambe una funzione con sg1
    noto s1 e es1 tramite una formula ottengo s2
    tramite una formula usando sg1 e t1 ottengo sg2

    vorrei fare ora un for che
    calcola t2 con lo stesso if usato per trovare t1 ma in cella1 deve sostituire a s1 -> s2 e me lo scrive in un’altra cella (cella7 per esempio).
    calcola es2 usando l’if di es1 ma sostituire a sg1 -> sg2 nelle cella3 e cella4 scrivendo il risultato in un’altra cella (cella8).

    io sto provando ad usare l'interfaccia di excel per creare la macro (registra macro) ma non credo sia la soluzione migliore.



  • di Enzo (utente non iscritto) data: 12/02/2010

    Allega un file di esempio


  • File esempio
    di Mauro (utente non iscritto) data: 12/02/2010

    Spero che il file allegato vada bene.
    ho capito che nel range è inutile mettere il contatore però almeno cosi "segnalo" quali sono le celle di partenza da cui creare le colonne di dati.
    qui le modifiche le ho fatto registrando la macro e penso che se riuscissi a fare funzionare il for dovrebbe essere a posto.
    grazie per la repentina risposta.
     
    Sub prova()
    '
    ' prova Macro
    '
    
    '
    For i = 1 To i = 5
    
        Range("Q20:U21").Select
        Selection.Copy
        Range("Q20+2*i").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("T22").Select
        ActiveCell.FormulaR1C1 = "es1+i[‰]"
        With ActiveCell.Characters(Start:=1, Length:=1).Font
            .Name = "Calibri"
            .FontStyle = "Normale"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        With ActiveCell.Characters(Start:=2, Length:=2).Font
            .Name = "Calibri"
            .FontStyle = "Normale"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = True
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = 1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
        End With
        With ActiveCell.Characters(Start:=4, Length:=3).Font
            .Name = "Calibri"
            .FontStyle = "Normale"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        Range("Z25+i").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-1]<=R7C30,R16C33,R17C33)"
        Range("AG16").Select
        ActiveCell.FormulaR1C1 = "=R6C30*(R[9]C[-8]/R7C30)^R8C30"
        Range("AA25+i").Select
        ActiveCell.FormulaR1C1 = "=RC[2]*R17C15"
        Range("AB25+i").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[1]<=R9C15,R[-3]C[-10],R[-2]C[-10])"
        Range("R22+2*i").Select
        ActiveCell.FormulaR1C1 = "=R[3]C[11]/R12C15"
        Range("R23+2*i").Select
        ActiveCell.FormulaR1C1 = "=R[2]C[11]/R[-8]C[-3]"
        Range("R23").Select
        ActiveCell.FormulaR1C1 = "=R[2]C[11]/R13C15"
        Range("U22+2*i").Select
        ActiveCell.FormulaR1C1 = "=IF(R[3]C[8]<=R9C15,RC[-3],R[1]C[-3])"
        Range("U23").Select
    Next i
    End Sub



  • di Enzo (utente non iscritto) data: 12/02/2010

    Quale file?



  • di Mauro (utente non iscritto) data: 12/02/2010

    Scusami, intendevo lo script.
    tu vuoi il file di excel?



  • di Mauro (utente non iscritto) data: 13/02/2010

    Ciao enzo.
    sono riuscito a semplificare notevolmente la cosa.
    ora ho una colonna di dati da prendere uno ad uno e metterli in una cella che, tramite una formula, mi restituisce il risultato che metterò accanto alla colonna dei dati iniziali.
    grazie per la disponibilità



  • di Mauro (utente non iscritto) data: 13/02/2010

    Ce l'ho fatta!!!