Macro selezionando una cella
Hai un problema con Excel? 
Macro selezionando una cella
di Scumm Bar (utente non iscritto) data: 07/06/2013 16:53:24
Salve a tutti e grazie anticipatamente per l'attenzione,
vi spiego brevemente il mio problema. Ho un file di Excel 2007 con più fogli e in uno di questi, chiamato Codici, ho una tabella composta da tre colonne (codice componente, descrizione componente, quantità) e un centinaio di righe, es:
COD COMP DESCR COMP QUANT
00001111 PANNELLO ANTERIORE 2
Quello che devo riuscire a fare è copiare la quantità (cioè il numero nella terza colonna) nel foglio Automatico (Cella B12) senza l'utilizzo di userform, ne pulsanti. Praticamente questo codice servirebbe per la creazione di un cartellino di produzione, quindi in tutta la tabella c'è solo un codice con una quantità diversa da zero. Ho provato con doubleclick sulla cella Descizione componente (mi crea un altro file con il foglio Codici), ho provato con l'attivazione della macro quando vede la cella <> " ma niente. Confido nel vostro aiuto e vi ringrazio ancora.
Ciao, Nicola
di mabolsie data: 07/06/2013 22:34:29
Ciao Scumm Puoi allegare qualche cosa o file o codice perchè cosi sei poco chiaro se ho capito bene vorresti fare click o doppio click sulla cella dove sta il numero di Quant e questa andrebbe copiata nel foglio Automatico B12.
Ho capito bene ???
di mabolsie data: 07/06/2013 22:46:35
Prova questo codice :
Ciao Max
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target = "" Then Exit Sub
Target.Copy Sheets("automatico").[b12]
Foglio1.Select
MsgBox "Copiato"
End Sub |
di mabolsie data: 07/06/2013 23:31:27
Rev.1
per scongiurare l'esecuzione di qualche altro evento ti ho modificato il codice
Ciao Max
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Target = "" Then Exit Sub
Target.Copy Sheets("automatico").[b12]
Foglio1.Select
MsgBox "Copiato"
Application.EnableEvents = True
End Sub |
di Vecchio Frac data: 08/06/2013 20:15:03
@max
almeno tu, a differenza di totygno, segui i miei consigli ;)
@scumm bar
nick spettacolare... gran bei tempi quelli della Lucas Arts non è vero? ^_^
di Scumm Bar (utente non iscritto) data: 10/06/2013 14:32:57
Il codice funziona, ti ringrazio Max. Se proprio posso osare vorrei chiederti se è possibile limitarlo solamente alla colonna D e se l'incolla può essere a valori. Intanto grazie ancora per l'aiuto. A Vecchio Frac invece rispondo che grazie a Dio c'è ancora chi preferisce Guybrush Threepwood in VGA, a discapito di punta a clicca di ultima generazione ma con trame penose...quelle si che erano avventure grafiche! Lunga vita allo scumm!
di Vecchio Frac data: 10/06/2013 16:02:22
Cosa vuol dire per te "l'incolla può essere a valori" ?
Io ho inteso che vuoi copiare solo il valore e non la formattazione.
Il codice che segue fa quello che chiedi come l'ho capito io.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Target = "" Then Exit Sub
'doppio clic ammesso solo in colonna D
If Intersect(Target, [D:D]) Is Nothing Then Exit Sub
Target.Copy
Sheets("automatico").[B12].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Foglio1.Select
MsgBox "Copiato"
Application.EnableEvents = True
'annulla l'effetto del doppio clic in cella (edit della cella)
Cancel = True
End Sub
|
di Scumm Bar (utente non iscritto) data: 10/06/2013 16:28:47
Era proprio quello che intendevo io, grazie. Ora ho mi spunta fuori un altro problema. Tramite un solo doppioclick vorrei copiare anche un altro dato, cioè il codice componente (nella colonna a dello stesso foglio Codici) nella cella B10 del foglio Automatico (copiare sempre solo il valore e non la formattazione), però mi dice "Errore nel metodo Select per la classe Range", debug mi evidenzia appunto "Range("b12").Select". Grazie ancora dell'attenzione e dell'aiuto
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Target = "" Then Exit Sub
'doppio clic ammesso solo in colonna D
If Intersect(Target, [D:D]) Is Nothing Then Exit Sub
Target.Copy
Sheets("automatico").[B12].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Foglio1.Select
Application.EnableEvents = True
'annulla l'effetto del doppio clic in cella (edit della cella)
Cancel = True
Sheets("Codici").Select
Range(ActiveCell.Offset(0, -2), ActiveCell.Offset(0, -2)).Select
Selection.Copy
Sheets("Automatico").Select
Range("b12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
|
di Vecchio Frac data: 10/06/2013 16:53:35
Uhm. E' più semplice ^_^
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Target = "" Then Exit Sub
'doppio clic ammesso solo in colonna D
If Intersect(Target, [D:D]) Is Nothing Then Exit Sub
Target.Copy
Sheets("automatico").[B12].PasteSpecial Paste:=xlPasteValues
Target.Offset(, -3).Copy
Sheets("automatico").[B10].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.EnableEvents = True
'annulla l'effetto del doppio clic in cella (edit della cella)
Cancel = True
End Sub |
di Scumm Bar (utente non iscritto) data: 10/06/2013 17:24:10
Intanto grazie della risposta, funziona, però ho bisogno che non si annulli l'effetto del doppioclick (non mi ero accorto prima, scusa), perchè è un operazione che devo effettuare più volte, grazie
di mabolsie data: 10/06/2013 18:44:13
@Vecchio Frac
....nella vita non si finisce mai d'imparare
Ciao Max
di Vecchio Frac data: 10/06/2013 18:56:01
Se hai letto il codice, ti basta impostare
Cancel = False
oppure eliminare del tutto quella riga, e l doppio click non verrà inibito. Tuttavia finchè sei in modalità editing nella cella, il doppio clic in quella cella non funzionerà... dovrai prima confermare con Invio :)
di Scumm Bar (utente non iscritto) data: 10/06/2013 19:25:23
Mi sei stato di grandissimo aiuto, grazie!
Vuoi Approfondire?