Questa *dovrebbe* fare quanto hai chiesto:
Public Sub m()
'gestione errori
On Error GoTo RigaErrore
'dichiaro le variabili
Dim wk As Workbook
Dim sh1 As Worksheet
Dim shX As Worksheet
Dim lNuovaRiga As Long
'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook
'metto un riferimento ai due fogli
With wk
Set sh1 = .Worksheets("Foglio1")
Set shX = .Worksheets(sh1.Range("B10").Value)
End With
'trovo la prima riga vuota in colonna B
'del foglio su cui incoller� i dati
With shX
lNuovaRiga = .Range("C" & _
.Rows.Count).End(xlUp).Row + 1
'voglio comunque partire dalla riga 5
If lNuovaRiga <= 4 Then lNuovaRiga = 5
'copio/incollo
sh1.Range("C10:Q10").Copy _
Destination:=.Cells(lNuovaRiga, 3)
End With
RigaChiusura:
'Set a Nothing delle variabili oggetto
Set shX = Nothing
Set sh1 = Nothing
Exit Sub
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaErrore
End Sub
Se(se) devi copiare il Range B10:Q10 del Foglio1
nelle celle Bn:Qn del FoglioX, modifica qui:
sh1.Range("C10:Q10").Copy _
Destination:=.Cells(lNuovaRiga, 3)
cos�:
sh1.Range("B10:Q10").Copy _
Destination:=.Cells(lNuovaRiga, 2)
perch� dal tuo post non si capisce.
Grazie per l'attenzione.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
non funziona, esce un mesbox di errore eche dice errore 0 oppure
errore 20 e si blocca ....
devo copiare nel range b5:c5
.......
devo copiare nel range b5:c5
**********************************************
Non ho capito nulla.
Il codice postato, funziona se(se):
Foglio1 ha i dati in C10:Q10
e devi incollarli nel foglio che ha il
nome riportato in B10 del Foglio1
e li incolla nelle celle Cn:Qn.
Rileggi *bene* i tuoi post e, per favore,
cerca di essere pi� chiaro.
Grazie.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/officeit/threads
Il codice postato, funziona se(se):
Foglio1 ha i dati in C10:Q10 (ESATTO )
e devi incollarli nel foglio che ha il
nome riportato in B10 del Foglio1 ( ESATTO )
e li incolla nelle celle Cn:Qn. ( cn = la prima riga vuota )
è TUTTO GIUSTO MA NN FUNZIONA
Aggiungo che la macro deve essere copia/incollata
in un modulo standard.
file, nuovo, pulito, ma nn funzina, mi dà sempre lo stesso errore...
Ma davvero? Non ci credo!
O meglio, forse non capisco io quello
che fai.
Scarica e vedi:
http://www.maurogsc.eu/prove/copiaaltrofoglio.zip
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
ho un altro problema, se puoi aiutarmi a risolvero :
nella cella a10 del foglio uno , dovrei inserire delle variabili :
capo spalla, pantalone, accessorio, calzature,
per ognuna di queste variabili ho una pagina nominata prorpio capo
spalla, pantalone, accessorio, calzature
è possibile fare una macro che a seconda del valore che inserisco
nella cella a1o del foglio 1 in automatico mi copia i valori b10:q10
nella pagina di riferimeto ?
( es. dati :
a10 =panatlone , b10 rosso , c10 adulto ecc - ad esecuzione della
macro i valori b10:q10 si registrano nella prima riga vuota del foglio
panatalone
a10 =capo spalla , b10 rosso , c10 adulto ecc - ad esecuzione della
macro i valori b10:q10 si registrano nella prima riga vuota del foglio
capo spalla
a10 = accessorio , b10 rosso , c10 adulto ecc - ad esecuzione della
macro i valori b10:q10 si registrano nella prima riga vuota del foglio
capo spalla )
Formattazione? Mah....
ho un altro problema, se puoi aiutarmi a risolvero :
nella cella a10 del foglio uno , dovrei inserire delle variabili :
capo spalla, pantalone, accessorio, calzature,
per ognuna di queste variabili ho una pagina nominata prorpio capo
spalla, pantalone, accessorio, calzature
� possibile fare una macro che a seconda del valore che inserisco
nella cella a1o del foglio 1 in automatico mi copia i valori b10:q10
nella pagina di riferimeto ?
( es. dati :
a10 =panatlone , b10 rosso , c10 adulto ecc - ad esecuzione della
macro i valori b10:q10 si registrano nella prima riga vuota del foglio
panatalone
a10 =capo spalla , b10 rosso , c10 adulto ecc - ad esecuzione della
macro i valori b10:q10 si registrano nella prima riga vuota del foglio
capo spalla
a10 = accessorio , b10 rosso , c10 adulto ecc - ad esecuzione della
macro i valori b10:q10 si registrano nella prima riga vuota del foglio
capo spalla )
*************************************************
Mi sfugge qualcosa....
Mi sembra che gi� ora la macro copi
nel foglio specificato in B10(la tua prima
richiesta).
Per quello che capisco(poco) � sufficente
modificare i riferimenti e quindi una cosa tipo
questa:
Public Sub m()
'gestione errori
On Error GoTo RigaErrore
'dichiaro le variabili
Dim wk As Workbook
Dim sh1 As Worksheet
Dim shX As Worksheet
Dim lNuovaRiga As Long
'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook
'metto un riferimento ai due fogli
With wk
Set sh1 = .Worksheets("Foglio1")
Set shX = .Worksheets(sh1.Range("A10").Value)
End With
'trovo la prima riga vuota in colonna B
'del foglio su cui incoller� i dati
With shX
lNuovaRiga = .Range("C" & _
.Rows.Count).End(xlUp).Row + 1
'voglio comunque partire dalla riga 5
If lNuovaRiga <= 4 Then lNuovaRiga = 5
'copio/incollo
sh1.Range("B10:Q10").Copy _
Destination:=.Cells(lNuovaRiga, 2)
End With
RigaChiusura:
'Set a Nothing delle variabili oggetto
Set shX = Nothing
Set sh1 = Nothing
Set wk = Nothing
Exit Sub
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaErrore
End Sub
Modificata qui e non testata.
funziona, però non effettua la verifca dell'esisenza dei valori
inseriti, cioè se inserisco 2 volte lo stesso valore , viene
registrato per 2 volte ... non si potrebbe prevedere il lancio di un
msgbox che avverte della presenza del dato già registrato?
funziona, c'è il mesg box di errore sulla varibile....
sono na frana ...
per completare tutto mi occrerebbe ora una macro che mi apre un foglio
nominato come il valore in A10 foglio 1
grazie,ciao
Cosa � *diverso* e cosa � *univoco* per te?
Voglio dire, cosa � che ti rende diversa una riga dall'altra?
Hai una colonna con un dato univoco? Quale?
Dobbiamo controllare cella per cella la riga?
Per favore considera che:
1) tu hai il tuo lavoro davanti, noi no
2) tu sai qual'� il tuo obiettivo, noi no
Grazie.
--
---------------------------
Mauro Gamberini
foglio 1 range A1:q1 , range dove inserisco di dati
foglio 2 range A4:q200 dove ho l'elenco dei dati da controllare solo
per la colonna A
controllo sul valore univoco A1 foglio1, riportato nella colonna A
alla riga X del foglio 2 =
cerca il valore "foglio A cella A1" nella "colonna A del foglio 2" e
ne verifica la presenza nella "colonna A del foglio 2", se presente
msgbox = "valore già registrato" ed esce,
se non è presente, aprire una nuova pagina con il nome = "valore
A2" del foglio1 e copia tutti dati del range a1:q1 foglio 1
nella prima riga vuota del range A4:q200 foglio 2 ...
il mio obiettivo è controllare se un dato viene registrato 2
voltenello stesso elenco presente nel foglio 2
Questa funzione in un modulo standard:
Public Function f( _
ByVal vDato As Variant, _
ByRef sh As Worksheet, _
ByVal sRng As String) As Long
Dim s As String
s = "COUNTIF(" & _
sh.Name & "!" _
& sRng & _
"," & _
vDato & ")"
f = Evaluate(s)
End Function
Che richiamerai dalla tua routine che controlla se
quanto inserito in A1 del Foglio1 � gi�
presente nella colonna A del Foglio2.
Qui ti metto una macro che mostra come
richiamarla:
Public Sub m()
Dim wk As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set wk = ThisWorkbook
With wk
Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
End With
If f(sh1.Range("A1").Value, sh2, "A:A") = 0 Then
'il dato non � presente
'codice
MsgBox "non presente"
Else
'il dato � gi� presente
'codice
MsgBox "presente"
End If
Set sh1 = Nothing
Set sh2 = Nothing
Set wk = Nothing
End Sub
Tu per�, se utilizzi gi� una macro, devi
solo guardare questa parte:
If f(sh1.Range("A1").Value, sh2, "A:A") = 0 Then
'il dato non � presente
'codice
MsgBox "non presente"
Else
'il dato � gi� presente
'codice
MsgBox "presente"
End If
In pratica la funzione si aspetta tre parametri:
1) vDato, il dato che vuoi controllare
(in questo caso quello che
hai nella cella A1 del Foglio1
2) sh, che � il foglio dove controllare se il
dato esiste gi�(Foglio2 in questo caso)
3) il Range(le celle) il cui fare la ricerca
(la colonna A in questo caso)
In pratica, la stringa s che nella funzione valutiamo tramite
Evaluate avr� nell'esempio questo testo:
COUNTIF(Foglio2!A:A,ValoreDellaCellaA1DelFoglio1)
dove: ValoreDellaCellaA1DelFoglio1 sar� il valore
appunto contenuto in A1 del Foglio1.
E', per concludere, come se eseguissimo la funzione
CONTA.SE() che abbiamo a disposizione in Excel lato
celle.
Vedi un po' se riesci da solo, altrimenti chiedi sempre
in questo thread.
Grazie per l'attenzione.
cavoli nn riesco proprio a farla funzionare...
potresti inserirla nel file in modo che io possa fare un download?
grazie