Macro in excel-modifica comando range
Hai un problema con Excel? 
Macro in excel-modifica comando range
di Gianni1966 data: 09/02/2011
Ciao, ho provato a creare una macro in excel con la registrazione in automatico ma alcuni comandi sicuramente non sono corretti. lo scopo è copiare dei dati da un file in un'altro utilizzando la macro. nella regiastrazione ho usato i comandi in excel end freccia in alto feccia a destra e freccia a sinistra, però se nella macro mi scrive "range("g128:k128").select" al posto del comando maiuscolo,freccia a destra 4 volte. cosi ogni volta che lancerò la macro andrà sempre a prendere le celle g128:k128 mentre il range cambia a secondo del risultato dei comandi precedenti. praticamente qual è il codice vba che sostituisce il comando in excel maiuscolo/freccia a destra 4 volte? spero di essere stato chiaro, vi ringrazio per l'aiuto che potrete darmi. saluti
Application.Goto Reference:="R200C2"
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
ChDir "K:CLCGSRendimenti"
Workbooks.Open Filename:= _
"K:CLCGSRendimentiSTORICO RENDIMENTI FIDEURAM VITA.xls"
Application.Goto Reference:="R2000C7"
Selection.End(xlUp).Select
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
Range("G128:K128").Select
Selection.Copy
Windows("2011-01-31 Storico Rendimenti Fideuram Vita.xls").Activate
ActiveSheet.Paste
Windows("STORICO RENDIMENTI FIDEURAM VITA.xls").Activate
Application.CutCopyMode = False
ActiveWindow.Close
End Sub |
di Mik (utente non iscritto) data: 09/02/2011
Ciao gianni
non ricordo come si estende una selezione in excel...però posso dirti che quello che stai tentando di fare, poui arrivarci diversamente così:
dal codice che hai postato elimina questa parte:
selection.end(xlup).select
selection.end(xlup).select
selection.offset(1, 0).select
range("g128:k128").select
selection.copy
e sostituisci con queste due righe:
colonna=activecell.colum
range(cells(1,colonna),cells(1,colonna+3)).copy |
di Mik (utente non iscritto) data: 09/02/2011
Si vabbèè sono orbo, non avevo notato l'offset +1 di riga, quindi cambia nella formula precedente mettici 2 al posto di uno per le due celle in range....
fammi sapere
ciao
Macro in excel-modifica comando range
di Gianni1966 (utente non iscritto) data: 10/02/2011
No, non funziona, la macro va in debug su "colonna = activecell.colum", sinceramente non conoscendo i codici vba non capisco perchè in ogni modo grazie per l'aiuto. ciao
Application.Goto Reference:="R200C2"
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
ChDir "K:CLCGSRendimenti"
Workbooks.Open Filename:= _
"K:CLCGSRendimentiSTORICO RENDIMENTI FIDEURAM VITA.xls"
Application.Goto Reference:="R2000C7"
colonna = ActiveCell.colum
Range(Cells(2, colonna), Cells(2, colonna + 3)).Copy
Selection.Copy
Windows("2011-01-31 Storico Rendimenti Fideuram Vita.xls").Activate
ActiveSheet.Paste
Windows("STORICO RENDIMENTI FIDEURAM VITA.xls").Activate
Application.CutCopyMode = False
ActiveWindow.Close
End Sub |
di Mik (utente non iscritto) data: 10/02/2011
Sono io che faccio le ore piccole...
ho sbagliato a scrivere..... è:
columns
comunque non capisco una cosa: seguendo i tasti registrati dal tuo codice è impossibile che restituisca un range alla riga 128!!! come mai a te da quella riga, hai percaso nascosto righe nel foglio?
di Mik (utente non iscritto) data: 10/02/2011
Ggrrrrrr.... dai prova con questa:
ma non ti da il suggerimento mentre scrivi?
colonna = ActiveCell.column |
Macro in excel-modifica comando range
di Gianni1966 (utente non iscritto) data: 10/02/2011
Meglio ma non il risultato sperato, cerco di spiegarti cosa stò cercando di fare, io ho in un file una tabella dove ogni mese scrivo una riga nuova (il 1 mese scrivo nella riga 1, il secondo nella riga 2, etc) ora io vorrei utilizzare una macro per copiare l'ultima riga compilata su un'altro file per questo mi posiziono sulla cella application.goto reference:="r2000c7" e con end freccia in alto andavo sulla prima cella piena poi inserivo il comando di scendere di una cella trovandomi sulla riga 128 (che cambierà di volta in volta che avrò aggiunto una nuova riga. con il comando che mi hai insegnato la macro mi copia sempre quello che è scritto nella riga 1 e non è quello che volevo. allego il codice con la tua modifica! spero di essermi fatto capire, purtroppo non comprendo bene il comando che mi hai consigliato e non so come modificarlo. ciao
Application.Goto Reference:="R200C2"
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
ChDir "K:CLCGSRendimenti"
Workbooks.Open Filename:= _
"K:CLCGSRendimentiSTORICO RENDIMENTI FIDEURAM VITA.xls"
Application.Goto Reference:="R2000C7"
colonna = ActiveCell.Column
Range(Cells(1, colonna), Cells(1, colonna + 4)).Copy
Windows("2011-01-31 Storico Rendimenti Fideuram Vita.xls").Activate
ActiveSheet.Paste
Windows("STORICO RENDIMENTI FIDEURAM VITA.xls").Activate
Application.CutCopyMode = False
ActiveWindow.Close
End Sub
|
di Mik (utente non iscritto) data: 10/02/2011
Adesso sei stato molto più chiaro...anche se dal codice che avevi postato inizialmente, non fa proprio quello che hai detto di voler fare adesso:
selection.end(xlup).select
selection.end(xlup).select
questi due comandi che si ripetono, non portano il cursore all'ultima riga piena del foglio, ma nella maggiorparte dei casi corrisponde alla prima riga assoluta del foglio...poi l'offset, lo sposta di una riga in basso, ed ecco spiegato il perchè della seconda riga....
ora, premesso che a te interessa l'ultima riga piena (assoluta), mi confermi che le colonne da copiare siano sempre dalla g alla k ?? oppure possono variare?
intanto prova con questo.. sostituendo alle due righe del cosice di prima
colonna=activecell.column ' memorizza la colonna attuale
cells(rows.count,colonna).select ' va all'utima riga assoluta del foglio
selection.end(xlup).select ' si posiziona sull'ultima riga piena
range(cells(selection.row,colonna),cells(selection.row,colonna+3)).copy 'copia includendo le 3 celle a destra a partire dalla cella attiva riga corrente |
Macro in excel-modifica comando range
di Gianni1966 (utente non iscritto) data: 11/02/2011
Perfetto, così va benissimo, grazie mille e soprattutto grazie per la spiegazione dei comandi che è molto utile, sei stato gentilissimo. trovo le macro in excel molto utili però il registratore in automatico di excel non è sufficiente se si cerca di fare qualcosa di più complesso, terrò a memoria i comandi che mi hai insegnato e cercherò ogni tanto di consultare il forum dove vedo che c'è molto da imparare. ciao
di Mik (utente non iscritto) data: 11/02/2011
Prego
si certo la registrazione macro per apprendere non è tutto...ma la guida in linea può fare tanto (tranne quella dal 2007 ad oggi che trovo peggiorata, quella del 2003 è ottima, secondo me, per imparare a conoscere ed apprendere i vari comandi..
ciao e in bocca al lupo
Vuoi Approfondire?