Condividi:        

macro per copiare solo i bordi di un altro foglio

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

macro per copiare solo i bordi di un altro foglio

Postdi luca62 » 13/06/21 17:09

Ho un file con vari fogli.
Vorrei costruire una macro da attivare tramite pulsanti che mi copi esclusivamente i bordi delle celle del foglio "base" nell'intervallo " I7 :X230,nello stesso intervallo del foglio su ucui sto lavorando. Ho provato con la costruzione della macro utilizzando il copia speciale, ma mi copia tutti i formati e non solo i bordi.
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Sponsor
 

Re: macro per copiare solo i bordi di un altro foglio

Postdi FRIEDRICH » 13/06/21 20:41

Ciao Luca,
prova il codice seguente:
Codice: Seleziona tutto
Sub CopiaSoloBordi()
   
    Dim wks1 As Worksheet, wks2 As Worksheet
   
    ActiveWorkbook.Styles("Normal").IncludeBorder = FALSE
   
    Set wks1 = ThisWorkbook.Sheets("base")
    Set wks2 = ActiveSheet
   
    With wks1.Range("I7:X230")
        .Copy
        With wks2.Range("I7:X230")
            .PasteSpecial -4122        'xlPasteSpecialOperationNone
            .Style = "Normal"
        End With
    End With
   
    ActiveWorkbook.Styles("Normal").IncludeBorder = TRUE
End Sub
Avatar utente
FRIEDRICH
Utente Junior
 
Post: 32
Iscritto il: 09/07/17 17:14

Re: macro per copiare solo i bordi di un altro foglio

Postdi Anthony47 » 14/06/21 20:59

@luca62
Prova la interessante macro suggerita da FRIEDRICH e fai sapere se l'esito e' soddisfacente

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per copiare solo i bordi di un altro foglio

Postdi luca62 » 08/07/21 18:13

scusate il ritardo! ho provato ma mi da questo errore:
Impossibile impostare la proprietà IncludeBorder per la classe style
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: macro per copiare solo i bordi di un altro foglio

Postdi Marius44 » 09/07/21 06:51

Ciao a tutti
Prova questa (è quella suggerita prima un po' modificata)
Codice: Seleziona tutto
Sub CopiaSoloBordi()
   
    Dim wks1 As Worksheet, wks2 As Worksheet
   
    ActiveWorkbook.Styles("Normal").IncludeBorder = False
   
    Set wks1 = ThisWorkbook.Sheets("base")
    Set wks2 = ActiveSheet
   
    With wks1.Range("I7:X230")
        .Copy
        With wks2.Range("I7:X230")
            .PasteSpecial -4122        'xlPasteSpecialOperationNone
            .Style = "Normal"
        End With
    End With
   
End Sub
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: macro per copiare solo i bordi di un altro foglio

Postdi luca62 » 09/07/21 07:20

mi da lo stesso errore
Impossibile impostare la proprietà IncludeBorder per la classe style
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: macro per copiare solo i bordi di un altro foglio

Postdi Marius44 » 09/07/21 18:30

Ciao
Nota adesso che hai la vers.2007 di Excel (e forse questo è il problema)
La macro che ti ho postato a me funziona (vers.2010 di Excel)

Ti suggerisco di dare un'occhiata a questo link https://excelchamps.com/vba/borders/

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: macro per copiare solo i bordi di un altro foglio

Postdi Anthony47 » 10/07/21 02:12

Si dice "bordi", ma dietro ci sono 8 bordi, ognuno con uno stile, un colore, uno spessore.
Copiare ognuno di questi elementi non e' difficile, ma richiedera' parecchi secondi; ad esempio con una macro come questa:
Codice: Seleziona tutto
Sub SoloBordi()
Dim myC As Range
Dim BS As Worksheet, ZZ As Long
'
If ActiveSheet.Name = "base" Then Exit Sub
Set BS = Sheets("base")
For Each myC In Range("I7 :X230")
    For ZZ = 5 To 12
        myC.Borders(ZZ).LineStyle = BS.Range(myC.Address).Borders(ZZ).LineStyle
        If BS.Range(myC.Address).Borders(ZZ).LineStyle <> xlNone Then
            myC.Borders(ZZ).Weight = BS.Range(myC.Address).Borders(ZZ).Weight
            myC.Borders(ZZ).Color = BS.Range(myC.Address).Borders(ZZ).Color
        End If
    Next ZZ
Next myC
End Sub

Altre strategie potrebbero certamente essere valutare, ma ci sono troppe combinazioni difficili da risolvere in un forum.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "macro per copiare solo i bordi di un altro foglio":


Chi c’è in linea

Visitano il forum: Nessuno e 49 ospiti