Condividi:        

[Excel] ciclo for

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] ciclo for

Postdi macio66 » 27/10/14 18:24

Ciao
Ho un problema con la sintassi nel ciclo for quando ci sono delle celle unite.
in questo esempio con le colonne singole il ciclo copia la colonna "D" e la riporta nella colonna "E" e "F" ripetendo il tutto dalla riga "6" alla riga "15"

Sub Inserisci_Dati()
'
For Riga = 6 To 15
'
Range("D" & Riga).Select
Selection.Copy
Range("E" & Riga).Select
ActiveSheet.Paste
Range("F" & Riga).Select
ActiveSheet.Paste
'
Next Riga
'
End Sub

Ma se la colonna "D" e unita con la colonna "E" [Range("D:E")] e il ciclo deve copiare il contenuto e riportarlo nel [Range("F:G")] e nel [Range("H:I")] ripetendo il tutto dalla riga "6" alla riga "15" , non riesco a scrivere la sintassi corretta.
Potete aiutarmi grazie
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Sponsor
 

Re: [Excel] ciclo for

Postdi ricky53 » 28/10/14 00:19

Ciao,
Ahi, Ahi ... celle unite sono solo GUAI !!!

Mi sfugge lo scopo di questo modo di copiare .. particolare dei dati.

Il tuo è un esempio esemplificativo della tua situazione reale?
Cosa devi fare effettivamente?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] ciclo for

Postdi Zer0Kelvin » 28/10/14 07:56

Salve a tutti.
Prima qualche appunto: riguardo alle celle unite, come già sottolineato da Ricky, se si intende usare il VBA, è molto meglio evitarle.
Spesso le celle unite provocano degli errori di esecuzione.
Un'altra cosa: un codice come questo
Codice: Seleziona tutto
Range("D" & Riga).Select
Selection.Copy
Range("E" & Riga).Select
ActiveSheet.Paste
è il tipo di codice generato dal registratore di macro, che registra passo passo ogni azione compiuta dall'utente.
Quando si programma, non c'è nessuna necessità di ripercorrere gli stessi passi; per eseguire la copia è sufficiente
Codice: Seleziona tutto
Range("D" & Riga).Copy Destination:=Range("E" & Riga)

Infine, quando inserisci del codice nel post, si deve usare il tag CODE, che migliora la leggibilità e mantiene l'indentazione del codice (se c'è).

Arrivando alla tua richiesta: non è chiaro se vuoi (nel caso di celle unite) copiare solo il valore in D:E oppure copiare le celle unite.
Infine, non hai bisogno di usare un ciclo for...next a meno che alcune celle siano unite e altre no.
Se vuoi copiare solo i valori il codice sarebbe questo:
Codice: Seleziona tutto
For riga = 6 To 15
    With Range("D" & riga)
        If .MergeCells Then
            .Copy Range("F" & riga)
            .Copy Range("H" & riga)
        Else
            .Copy Range("E" & riga)
            .Copy Range("F" & riga)
        End If
    End With
Next riga


Se invece le celle in colonna D:E sono o tutte unite o nessuna puoi fare a meno del ciclo
Codice: Seleziona tutto
With Range("D6:D15")
    If .MergeCells Then
        .Copy Range("F6")
        .Copy Range("H6")
    Else
        .Copy Range("E6:F6")
    End If
End With
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: [Excel] ciclo for

Postdi macio66 » 28/10/14 18:00

Ciao a tutti.
Il mio problema nasce da una tabella dove sono presenti delle celle unite che in base a una selezione in fase di stampa, deve cambiare delle impostazioni sulla tabella.
La selezione è la seguente:
Private Sub Stampa_Click()
'
Worksheets("Master").Visible = True
'
Worksheets("Colonne").Visible = True
'
Sheets("Master").Select
'
If Range("I13").Text = "HV" Or Range("I13").Text = "HK" Then
'
TreColonne
'
Else
'
DueColonne
'
End If
'
Worksheets("Master").PrintOut
'
Worksheets("Master").Visible = False
'
Worksheets("Colonne").Visible = False
'
End Sub

In base a quello che viene inserito nel Range("I13"), l'impostazione che ho creato è la seguente:

Sub DueColonne()
'
Range("H18:S51").Select
Selection.UnMerge
Range("L18:S51").Select
Selection.ClearContents
Range("H18:M18").Select
Selection.Merge
Range("H19:M19").Select
Selection.Merge
Range("H20:M20").Select
Selection.Merge
Range("H21:M21").Select
Selection.Merge
Range("H22:M22").Select
Selection.Merge
Range("H23:M23").Select
Selection.Merge
Range("H24:M24").Select
Selection.Merge
Range("H25:M25").Select
Selection.Merge
Range("H26:M26").Select
Selection.Merge
Range("H27:M27").Select
Selection.Merge
Range("H28:M28").Select
Selection.Merge
Range("H29:M29").Select
Selection.Merge
Range("H30:M30").Select
Selection.Merge
Range("H31:M31").Select
Selection.Merge
Range("H32:M32").Select
Selection.Merge
Range("H33:M33").Select
Selection.Merge
Range("H34:M34").Select
Selection.Merge
Range("H35:M35").Select
Selection.Merge
Range("H36:M36").Select
Selection.Merge
Range("H37:M37").Select
Selection.Merge
Range("H38:M38").Select
Selection.Merge
Range("H39:M39").Select
Selection.Merge
Range("H40:M40").Select
Selection.Merge
Range("H41:M41").Select
Selection.Merge
Range("H42:M42").Select
Selection.Merge
Range("H43:M43").Select
Selection.Merge
Range("H44:M44").Select
Selection.Merge
Range("H45:M45").Select
Selection.Merge
Range("H46:M46").Select
Selection.Merge
Range("H47:M47").Select
Selection.Merge
Range("H48:M48").Select
Selection.Merge
Range("H49:M49").Select
Selection.Merge
Range("H50:M50").Select
Selection.Merge
Range("H51:M51").Select
Selection.Merge
'
DatiDueColonne
'
Range("N18:S18").Select
Selection.Merge
Range("N19:S19").Select
Selection.Merge
Range("N20:S20").Select
Selection.Merge
Range("N21:S21").Select
Selection.Merge
Range("N22:S22").Select
Selection.Merge
Range("N23:S23").Select
Selection.Merge
Range("N24:S24").Select
Selection.Merge
Range("N25:S25").Select
Selection.Merge
Range("N26:S26").Select
Selection.Merge
Range("N27:S27").Select
Selection.Merge
Range("N28:S28").Select
Selection.Merge
Range("N29:S29").Select
Selection.Merge
Range("N30:S30").Select
Selection.Merge
Range("N31:S31").Select
Selection.Merge
Range("N32:S32").Select
Selection.Merge
Range("N33:S33").Select
Selection.Merge
Range("N34:S34").Select
Selection.Merge
Range("N35:S35").Select
Selection.Merge
Range("N36:S36").Select
Selection.Merge
Range("N37:S37").Select
Selection.Merge
Range("N38:S38").Select
Selection.Merge
Range("N39:S39").Select
Selection.Merge
Range("N40:S40").Select
Selection.Merge
Range("N41:S41").Select
Selection.Merge
Range("N42:S42").Select
Selection.Merge
Range("N43:S43").Select
Selection.Merge
Range("N44:S44").Select
Selection.Merge
Range("N45:S45").Select
Selection.Merge
Range("N46:S46").Select
Selection.Merge
Range("N47:S47").Select
Selection.Merge
Range("N48:S48").Select
Selection.Merge
Range("N49:S49").Select
Selection.Merge
Range("N50:S50").Select
Selection.Merge
Range("N51:S51").Select
Selection.Merge
'
'
Range("H18:S51").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDot
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("N18:S18").Select
ActiveCell.FormulaR1C1 = "2"
Range("A1:F5").Select
'
'
Range("H68:S103").Select
Selection.ClearContents
Selection.UnMerge
ActiveWindow.SmallScroll Down:=-51
Range("H16:S51").Select
Selection.Copy
Range("H68:S103").Select
ActiveSheet.Paste
Range("A1:F5").Select
Application.CutCopyMode = False
'
'
Range("H120:S149").Select
Selection.ClearContents
Selection.UnMerge
ActiveWindow.SmallScroll Down:=-108
Range("H16:S45").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=105
Range("H120:S149").Select
ActiveSheet.Paste
Range("G147").Select
Application.CutCopyMode = False
Selection.Copy
Range("H147:M147").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Merge
Selection.AutoFill Destination:=Range("H147:M149"), Type:=xlFillDefault
Range("H147:M149").Select
Selection.AutoFill Destination:=Range("H147:S149"), Type:=xlFillDefault
Range("H147:S149").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDot
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
ActiveWindow.SmallScroll Down:=-129
Range("A1:F5").Select
'
'
End Sub

Sub TreColonne()
'
Range("H18:S51").Select
Selection.UnMerge
Range("L18:S51").Select
Selection.ClearContents
Range("H18:K18").Select
Selection.Merge
Range("H19:K19").Select
Selection.Merge
Range("H20:K20").Select
Selection.Merge
Range("H21:K21").Select
Selection.Merge
Range("H22:K22").Select
Selection.Merge
Range("H23:K23").Select
Selection.Merge
Range("H24:K24").Select
Selection.Merge
Range("H25:K25").Select
Selection.Merge
Range("H26:K26").Select
Selection.Merge
Range("H27:K27").Select
Selection.Merge
Range("H28:K28").Select
Selection.Merge
Range("H29:K29").Select
Selection.Merge
Range("H30:K30").Select
Selection.Merge
Range("H31:K31").Select
Selection.Merge
Range("H32:K32").Select
Selection.Merge
Range("H33:K33").Select
Selection.Merge
Range("H34:K34").Select
Selection.Merge
Range("H35:K35").Select
Selection.Merge
Range("H36:K36").Select
Selection.Merge
Range("H37:K37").Select
Selection.Merge
Range("H38:K38").Select
Selection.Merge
Range("H39:K39").Select
Selection.Merge
Range("H40:K40").Select
Selection.Merge
Range("H41:K41").Select
Selection.Merge
Range("H42:K42").Select
Selection.Merge
Range("H43:K43").Select
Selection.Merge
Range("H44:K44").Select
Selection.Merge
Range("H45:K45").Select
Selection.Merge
Range("H46:K46").Select
Selection.Merge
Range("H47:K47").Select
Selection.Merge
Range("H48:K48").Select
Selection.Merge
Range("H49:K49").Select
Selection.Merge
Range("H50:K50").Select
Selection.Merge
Range("H51:K51").Select
Selection.Merge
'
DatiTreColonne
'
Range("L18:O18").Select
Selection.Merge
Range("L19:O19").Select
Selection.Merge
Range("L20:O20").Select
Selection.Merge
Range("L21:O21").Select
Selection.Merge
Range("L22:O22").Select
Selection.Merge
Range("L23:O23").Select
Selection.Merge
Range("L24:O24").Select
Selection.Merge
Range("L25:O25").Select
Selection.Merge
Range("L26:O26").Select
Selection.Merge
Range("L27:O27").Select
Selection.Merge
Range("L28:O28").Select
Selection.Merge
Range("L29:O29").Select
Selection.Merge
Range("L30:O30").Select
Selection.Merge
Range("L31:O31").Select
Selection.Merge
Range("L32:O32").Select
Selection.Merge
Range("L33:O33").Select
Selection.Merge
Range("L34:O34").Select
Selection.Merge
Range("L35:O35").Select
Selection.Merge
Range("L36:O36").Select
Selection.Merge
Range("L37:O37").Select
Selection.Merge
Range("L38:O38").Select
Selection.Merge
Range("L39:O39").Select
Selection.Merge
Range("L40:O40").Select
Selection.Merge
Range("L41:O41").Select
Selection.Merge
Range("L42:O42").Select
Selection.Merge
Range("L43:O43").Select
Selection.Merge
Range("L44:O44").Select
Selection.Merge
Range("L45:O45").Select
Selection.Merge
Range("L46:O46").Select
Selection.Merge
Range("L47:O47").Select
Selection.Merge
Range("L48:O48").Select
Selection.Merge
Range("L49:O49").Select
Selection.Merge
Range("L50:O50").Select
Selection.Merge
Range("L51:O51").Select
Selection.Merge
'
Range("P18:S18").Select
Selection.Merge
Range("P19:S19").Select
Selection.Merge
Range("P20:S20").Select
Selection.Merge
Range("P21:S21").Select
Selection.Merge
Range("P22:S22").Select
Selection.Merge
Range("P23:S23").Select
Selection.Merge
Range("P24:S24").Select
Selection.Merge
Range("P25:S25").Select
Selection.Merge
Range("P26:S26").Select
Selection.Merge
Range("P27:S27").Select
Selection.Merge
Range("P28:S28").Select
Selection.Merge
Range("P29:S29").Select
Selection.Merge
Range("P30:S30").Select
Selection.Merge
Range("P31:S31").Select
Selection.Merge
Range("P32:S32").Select
Selection.Merge
Range("P33:S33").Select
Selection.Merge
Range("P34:S34").Select
Selection.Merge
Range("P35:S35").Select
Selection.Merge
Range("P36:S36").Select
Selection.Merge
Range("P37:S37").Select
Selection.Merge
Range("P38:S38").Select
Selection.Merge
Range("P39:S39").Select
Selection.Merge
Range("P40:S40").Select
Selection.Merge
Range("P41:S41").Select
Selection.Merge
Range("P42:S42").Select
Selection.Merge
Range("P43:S43").Select
Selection.Merge
Range("P44:S44").Select
Selection.Merge
Range("P45:S45").Select
Selection.Merge
Range("P46:S46").Select
Selection.Merge
Range("P47:S47").Select
Selection.Merge
Range("P48:S48").Select
Selection.Merge
Range("P49:S49").Select
Selection.Merge
Range("P50:S50").Select
Selection.Merge
Range("P51:S51").Select
Selection.Merge
'
'
Range("H18:S51").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDot
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("L18:O18").Select
ActiveCell.FormulaR1C1 = "2"
Range("P18:S18").Select
ActiveCell.FormulaR1C1 = "3"
Range("A1:F5").Select
'
'
Range("H68:S103").Select
Selection.UnMerge
Selection.ClearContents
Range("H16:S51").Select
Selection.Copy
Range("H68:S103").Select
ActiveSheet.Paste
Range("A1:F5").Select
Application.CutCopyMode = False
'
'
Range("H120:S149").Select
Selection.ClearContents
Selection.UnMerge
Range("H16:S45").Select
Selection.Copy
Range("H120:S149").Select
ActiveSheet.Paste
Range("G147").Select
Application.CutCopyMode = False
Selection.Copy
Range("H147:K147").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Merge
Selection.AutoFill Destination:=Range("H147:K149"), Type:=xlFillDefault
Range("H147:K149").Select
Selection.AutoFill Destination:=Range("H147:S149"), Type:=xlFillDefault
Range("H147:S149").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDot
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("A1:F5").Select
'
End Sub

Sub DatiDueColonne()
'
For riga = 18 To 51
'
With Range("H" & riga)
'
If .MergeCells Then
'
.Copy Range("N" & riga)
'
Else
'
.Copy Range("I" & riga)
'
End If
'
End With
'
Next riga
'
'
End Sub

Sub DatiTreColonne()
'
For riga = 18 To 51
'
With Range("H" & riga)
'
If .MergeCells Then
'
.Copy Range("L" & riga)
.Copy Range("P" & riga)
'
Else
'
.Copy Range("I" & riga)
.Copy Range("J" & riga)
'
End If
'
End With
'
Next riga
'
'
End Sub

Come si può notare nella tabella ci possono essere o due o tre serie di celle unite in cui ci sono dei dati da inserire.
Così come è strutturata funziona, ma vorrei sapere se c'è la possibilità di semplificare il tutto.
Grazie
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: [Excel] ciclo for

Postdi Zer0Kelvin » 28/10/14 21:12

Intanto avevo scritto:
Infine, quando inserisci del codice nel post, si deve usare il tag CODE, che migliora la leggibilità e mantiene l'indentazione del codice (se c'è).
Poi hai inserito una vera babele di codice che non è di alcun interesse per la soluzione del quesito; le domande erano: Le celle sono tutte unite o tutte no? devi copiare i valori o le celle?
Per la prima si è capito che alcune celle sono unite ed alcune no, quindi bisogna usare un ciclo; alla seconda non hai risposto.
Poi non dai segno di aver provato quanto ti è stato proposto! :evil:
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: [Excel] ciclo for

Postdi macio66 » 28/10/14 21:43

Ciao,
Per quel che riguarda la seconda domanda, devo copiare dei valori e le celle unite devono cambiare da 4 (e ce ne sono 2) a 6 (e ce ne sono 3).
Mentre per il tag CODE da usare per inserire del codice nel post, scusami ma non sono molto afferrato su come adoperarlo.
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: [Excel] ciclo for

Postdi macio66 » 28/10/14 21:49

Ciao,
Dimenticavo di dire che quello che mi è stato proposto ho provato ad usarlo e quello che più mi sembrava adatto l'ho usato nel codice ( DatiDueColonne() ) e ( DatiTreColonne() )
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: [Excel] ciclo for

Postdi Zer0Kelvin » 28/10/14 23:23

Per usare il tag CODE devi selezionare il codice inserito e cliccare sul pulsante CODE sopra l'editor di testo; oppure cliccare prima il pulsante code ed incollare il testo in mezzo ai due tag che vengono inseriti.
Il codice delle due macro principali dovrebbe potersi semplificare così
Codice: Seleziona tutto
Sub Borders1(Area As Range)
Dim bb
    With Area
        '.Borders(xlDiagonalDown).LineStyle = xlNone
        '.Borders(xlDiagonalUp).LineStyle = xlNone
        For Each bb In Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight, _
                            xlInsideVertical, xlInsideHorizontal)
            With .Borders(bb)
                .LineStyle = xlContinuous
                .ColorIndex = 0
                .TintAndShade = 0
                .Weight = xlThin
            End With
        Next bb
        .Borders(xlInsideVertical).LineStyle = xlDot
        .Borders(xlEdgeBottom).Weight = xlMedium
    End With
End Sub

Sub DueColonne()
Dim Riga
    Range("H18:S51").UnMerge
    Range("L18:S51").ClearContents
    For Riga = 18 To 51
        Range("H" & Riga & ":M" & Riga).Merge
    Next Riga
    DatiDueColonne
    For Riga = 18 To 51
        Range("N" & Riga & ":S" & Riga).Merge
    Next Riga
    Borders1 (Range("H18:S51"))
    Range("N18:S18").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("A1:F5").Select
    Range("H68:S103").Select
    Selection.ClearContents
    Selection.UnMerge
    Range("H16:S51").Select
    Selection.Copy
    Range("H68:S103").Select
    ActiveSheet.Paste
    Range("H120:S149").ClearContents
    Range("H120:S149").UnMerge
    Range("H16:S45").Copy Range("H120:S149")
    Range("G147").Copy
    With Range("H147:M147")
        .PasteSpecial Paste:=xlPasteFormats
        .Merge
        .AutoFill Destination:=Range("H147:M149"), Type:=xlFillDefault
    End With
    Range("H147:M149").AutoFill Destination:=Range("H147:S149"), Type:=xlFillDefault
    Borders1 (Range("H147:S149"))
    Application.CutCopyMode = False
    Range("A1:F5").Select
End Sub

Sub TreColonne()
Dim Riga
    Range("H18:S51").UnMerge
    Range("L18:S51").ClearContents
    For Riga = 18 To 51
        Range("H" & Riga & ":K" & Riga).Merge
    Next Riga
    DatiTreColonne
    For Riga = 18 To 51
        Range("L" & Riga & ":O" & Riga).Merge
    Next Riga

    For Riga = 18 To 51
        Range("P" & Riga & ":S" & Riga).Merge
    Next Riga
    Borders1 Range("H18:S51")
    Range("L18:O18").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("P18:S18").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("A1:F5").Select
    Range("H68:S103").UnMerge
    Range("H68:S103").ClearContents
    Range("H16:S51").Copy Range("H68:S103")
    Range("H120:S149").ClearContents
    Range("H120:S149").UnMerge
    Range("H16:S45").Copy Range("H120:S149")
    Range("G147").Copy
    Range("H147:K147").PasteSpecial Paste:=xlPasteFormats
    Range("H147:K147").Merge
    Range("H147:K147").AutoFill Destination:=Range("H147:K149"), Type:=xlFillDefault
    Range("H147:K149").AutoFill Destination:=Range("H147:S149"), Type:=xlFillDefault
    Borders1 Range("H147:S149")
End Sub

Naturalmente non ho potuto testare la correttezza delle mie modifiche.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: [Excel] ciclo for

Postdi macio66 » 29/10/14 17:48

Ciao,
Il tuo codice funziona perfettamente per il TreColonne, mentre quando lancio il codice DueColonne si blocca al punto
[Borders1 (Range("H18:S51"))] e mi da l'errore di run-time '424' (Necessario oggetto].
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: [Excel] ciclo for

Postdi Zer0Kelvin » 29/10/14 20:57

Se il codice è quello che hai riportato, ho aggiunto delle parentesi non necessarie, prova a toglierle.
Cambia
Codice: Seleziona tutto
Borders1 (Range("H18:S51"))
in
Codice: Seleziona tutto
Borders1 Range("H18:S51")
fallo in tutte le chiamate a Borders1.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: [Excel] ciclo for

Postdi macio66 » 30/10/14 06:18

Ciao,
Adesso funziona correttamente.
Grazie
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] ciclo for":


Chi c’è in linea

Visitano il forum: raimea e 58 ospiti