| | 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 | |
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 | |
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 |
|
|