È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Copiare celle non attigue

Ultimo Aggiornamento: 20/03/2017 10:04
Post: 126
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
19/03/2017 22:38

Ciao a tutti,
con questa macro riesco a copiare la cella A7 del foglio Modulo in A1 del foglio Archivio.

Ma cosa devo implementare per fargli copiare anche le altre celle non attigue con alcune distinzioni:
B7 -> singola come A7
B12+B23 -> concatenate con spazio
A48+B48 -> concatenate con spazio

La macro che funziona solo per A7 è:
Sub ArchiviaDato() ' 
Set wsh = ThisWorkbook.Worksheets("Archivio") 
Set wsh1 = ThisWorkbook.Worksheets("Modulo") 
uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row              
If wsh1.Range("A" & 7) = "" Or wsh1.Range("B" & 7) = "" Or _ 
wsh1.Range("B" & 12) = "" Or wsh1.Range("B" & 23) = "" Or _
wsh1.Range("A" & 48) = "" Or _         
wsh1.Range("B" & 48) = "" Then             
MsgBox ("VERIFICA I DATI INSERITI"), vbInformation, "ATTENZIONE" 
Exit Sub         
End If     
Range("A7").Select     
Selection.Copy     
Range("F10").Select     
Sheets("Archivio").Select     
Range("A1").Select     
ActiveCell.Offset(uriga, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks:= _         
False, Transpose:=True     
ActiveCell.Offset(1, 0).Range("A1").Select     
Sheets("Modulo").Select     
Application.CutCopyMode = False     

Range("F4").Select 
End Sub


Grazie in anticipo per l'aiuto.

[Modificato da BG66 19/03/2017 22:44]
BG66
Excel 2010
Post: 3.778
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
19/03/2017 23:13

Re:
B7 -> singola come A7 - vsh.Range("B7").Copy vsh1.Range("A7")

B12+B23 -> concatenate con spazio - dove le vuoi copiare ?
A48+B48 -> concatenate con spazio - dove le vuoi copiare ?


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 126
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
20/03/2017 09:16

Re: Re:
Ciao Patel,
patel45, 19/03/2017 23.13:

B7 -> singola come A7 - vsh.Range("B7").Copy vsh1.Range("A7")

B12+B23 -> concatenate con spazio - dove le vuoi copiare ?
A48+B48 -> concatenate con spazio - dove le vuoi copiare ?




Come da dato atteso nel file allegato ossia:
A7 di "Modulo" in A2 di "Archivio"
B7 di "Modulo" in B2 di "Archivio"
B12+B23 di "Modulo" in C2 di "Archivio"
A48+B48 di "Modulo" in D2 di "Archivio"

Se puoi comunque dare un'occhiata anche alla macro perchè quando ho inserito:
 wsh.Range("B7").Copy wsh1.Range("B2")

Il debug non ha gradito evidenziandomi la parte:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks:= _         
False, Transpose:=True 


Grazie se puoi.
BG66
Excel 2010
Post: 1.127
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
20/03/2017 09:42

Ciao
usa delle variabili di appoggio:
Sub ArchiviaDato() '
Set wsh = ThisWorkbook.Worksheets("Archivio")
Set wsh1 = ThisWorkbook.Worksheets("Modulo")
uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row
    
        If wsh1.Range("A" & 7) = "" Or wsh1.Range("B" & 7) = "" Or _
        wsh1.Range("B" & 12) = "" Or wsh1.Range("B" & 23) = "" Or _
        wsh1.Range("A" & 48) = "" Or _
        wsh1.Range("B" & 48) = "" Then
            MsgBox ("VERIFICA I DATI INSERITI"), vbInformation, "ATTENZIONE"
            Exit Sub
        End If
    mRif = Range("A7")
    dEmis = Range("B7")
    mProd = Range("B12") & " " & Range("B23")
    mDest = Range("A48") & " " & Range("B48")
    wsh.Cells(uriga + 1, 1) = mRif
    wsh.Cells(uriga + 1, 2) = dEmis
    wsh.Cells(uriga + 1, 3) = mProd
    wsh.Cells(uriga + 1, 4) = mDest
    
End Sub


Saluti

Edit: per evitare che il riferimento 1/2017 venga interpretato come data, potresti modificare: mRif = "'" & (Range("A7")), oppure formattare l'intera colonna A del foglio Archivio come testo e lasciare: mRif = Range("A7")


[Modificato da dodo47 20/03/2017 09:50]
Domenico
Win 10 - Excel 2016
Post: 127
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
20/03/2017 10:04

[RISOLTO]
Ciao Domenico,
è perfetta.
dodo47, 20/03/2017 09.42:


Edit: per evitare che il riferimento 1/2017 venga interpretato come data, potresti modificare: mRif = "'" & (Range("A7")), oppure formattare l'intera colonna A del foglio Archivio come testo e lasciare: mRif = Range("A7")



Sul file master avevo già formattato la colonna A.
Ma proverò comunque anche la tua opzione 1 che ovviamente non conoscevo.

Grazie.
[Modificato da BG66 20/03/2017 10:10]
BG66
Excel 2010
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
MAX su celle non nascosta (3 messaggi, agg.: 08/10/2018 15:33)
Raggruppamento celle non vuote (9 messaggi, agg.: 04/06/2019 10:55)
Trovare celle non vuote (3 messaggi, agg.: 14/07/2019 23:09)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 18:38. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com