| | Post: 60 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
21/08/2017 15:27 | |
Ciao a tutti
Il file allegato contiene una macro che riporta il valore selezionato in colonna D nella cella F1.
É possibile fare in modo che selezionando un valore della colonna D non riporti il valore contenuto della stessa cella selezionata ma bensí il valore contenuto in colonna B sulla stessa riga?
Es: Seleziono cella D16, valore riportato in F1 è 66
Grazie mille
Marilena
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <= 4 Then
Cells(1, 6) = Target.Value
End If
End Sub |
|
| | Post: 3.415 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
21/08/2017 15:44 | |
Ciao Marilena
Al momento non un pc ma prova a sostituire la terza riga con questa istruzione
Cells(Target.Row, 2).Value = Target.Value
Alfredo |
| | Post: 1.557 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
21/08/2017 16:42 | |
ciao
forse è:
Cells(1, 6) = Cells(Target.Row, 2).Value
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 1.313 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
21/08/2017 19:09 | |
ho scritto
un doppione
anche se non capisco quel <=4
sarà =4
altrimenti funziona anche in C e B
oppure
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("D10:D10000")) Is Nothing Then
Cells(1, 6) = Cells(Target.Row, 2).Value
End If
End Sub
[Modificato da federico460 21/08/2017 19:16] |
| | Post: 60 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
22/08/2017 16:47 | |
Grazie di cuore a tutti.
La proposta di dodo funziona bene.
scusate tanto,....pensavo di riuscire ad abbinare una seconda macro al cambio valore della cella F1 ma non ci riesco a farla funzionare correttamente, funziona solo se clicco sulla cella stessa ( F1 ).
Sapete dove sbaglio? Perchè vorrei che la seconda macro si lanciasse in automatico ad ogni cambiamento di valore nella cella F1
Riallego il file con la macro
ancora grazie mille
Marilena
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim col As Long
Dim rig As Long
If Target.Column = 4 Then
Cells(1, 6) = Cells(Target.Row, 2).Value
End If
If Not Intersect(Target, Range("f1")) Is Nothing Then
rig = Target.Row
For i = 7 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = Target Then Exit For
Next i
Cells(rig, 7).Select
ActiveWindow.SmallScroll ToRight:=i - 7
End If
End Sub
|
| | Post: 1.559 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
22/08/2017 18:05 | |
ciao
dovresti spiegare a parole cosa deve fare la seconda macro perchè leggendo il tuo codice non si capisce (almeno io non capisco)
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 61 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
22/08/2017 18:42 | |
Ciao dodo
grazie per avermi chiesto ulteriori spiegazioni
la seconda macro accosta alla colonna F la colonna contenente lo stesso valore della cella F1 presente in riga 1
esempio:
se seleziono la cella D18 la prima macro riporta il valore 38 in F1 mentre la seconda macro dovrebbe cercare il corrispondente (in questo caso il 38) e posizionarlo a lato della F1 .
Al momento la macro si attiva e accosta lo stesso numero solo se clicco direttamente sulla cella F1 mentre avrei bisogno che i rispettivi numeri si accostassero cliccando direttamente dalla colonna D.
saluti
Marilena |
| | Post: 1.315 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
22/08/2017 23:48 | |
ciao
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim col As Long
Dim rig As Long
If Target.Column = 4 Then
Cells(1, 6) = Cells(Target.Row, 2).Value
Cells(1, 6).Select
End If
If Not Intersect(Target, Range("f1")) Is Nothing Then
rig = Target.Row
For i = 7 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = Target Then Exit For
Next i
Cells(rig, 7).Select
ActiveWindow.SmallScroll ToRight:=i - 7
End If
End Sub
dovrebbe essere quello che chiedi
sicuramente migliorabile non sono
esperto di macro
ma funziona |
| | Post: 62 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
23/08/2017 09:32 | |
ciao federico
grazie ma da me funziona sempre solo se clicco direttamente sulla F1 ma non si attiva in automatico al clic su una lettera in colonna D
saluti
Marilena
|
| | Post: 1.316 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
23/08/2017 09:54 | |
ciao
proprio no
l'ho testato anche ora
basta aggiungere alla tua prima macro
Cells(1, 6).Select
dopo
Cells(1, 6) = Cells(Target.Row, 2).Value
e prima di End If
e funziona
quella stringa in più
ti porta la selezione in cella F1
e fa in modo che tu non debba cliccarci sopra
[Modificato da federico460 23/08/2017 09:57] |
| | Post: 1.561 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
23/08/2017 10:53 | |
Mary-92, 22/08/2017 18.42:
Ciao dodo
grazie per avermi chiesto ulteriori spiegazioni
la seconda macro accosta alla colonna F la colonna contenente lo stesso valore della cella F1 presente in riga 1
esempio:
se seleziono la cella D18 la prima macro riporta il valore 38 in F1 mentre la seconda macro dovrebbe cercare il corrispondente (in questo caso il 38) e posizionarlo a lato della F1 .
Al momento la macro si attiva e accosta lo stesso numero solo se clicco direttamente sulla cella F1 mentre avrei bisogno che i rispettivi numeri si accostassero cliccando direttamente dalla colonna D.
saluti
Marilena
Ciao
c'è un errore di fondo nella tua impostazione, relativo allo scroll.
Prova:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim col As Long
Dim rig As Long
If Target.Column = 4 Then
Cells(1, 6) = Cells(Target.Row, 2).Value
Cells(1, 6).Select
End If
rig = 1
For i = 7 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = Target Then
Application.Goto Cells(1, i), True
Exit For
End If
Next i
End Sub
Saluti
[Modificato da dodo47 23/08/2017 10:56] Domenico
Win 10 - Excel 2016 |
| | Post: 1.317 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
23/08/2017 11:04 | |
ciao
Dodo
mi dici perché le celle con la T e la U
o non vengono lette e si comportano stranamente?
e non capisco perché selezionare
alla fine
una cella che al 99% dei casi
è nascosta?
Cells(rig, 7).Select
non sarebbe più logico selezionare
la 6?
almeno vedi la selezione [Modificato da federico460 23/08/2017 11:07] |
| | Post: 1.563 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
23/08/2017 11:21 | |
Ciao fede
io ho capito che mary vuole accostare la colonna della riga 1 contenente il valore scelto in f1 appunto alla colonna f, quindi se scelgo la T, la col. AB (contenente il corrispondente valore 33) si accosta alla colonna F.
Se non è così, ma mary vuole un posizionamento tipo "battaglia navale" basterà posizionarsi sulla relativa riga
Quindi aspettiamo l'intervento di mary.
cari saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 1.318 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
23/08/2017 11:26 | |
Dodo
non mi hai capito
la battaglia navale funziona
solo che se clicchi sulla colonna D
non si vedono nelle colonne a DX della cella F1
i valori delle righe inerenti alle lettere T e U
più se clicchi su una di queste due i dati vengono completamente
sfalsati
(forse un copia incolla fatto male?)
|
| | Post: 63 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
23/08/2017 13:09 | |
Ciao dodo e fede
L'interpretazione è esatta !!! ma sono disperata perchè a casa , durante la pausa pranzo ho constatato che sul pc funziona !! mentre sul lavoro con mac no ! Ed è proprio li che mi serve :-( ho provato a riscrivere il codice da capo ma niente !!!
esistono eventualmente alternative che potrei provare?
cari saluti
grazieeee
Marilena |
| | Post: 1.566 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
23/08/2017 18:28 | |
Mary: sorry, non so aiutarti con il mac
Fede: non saprei cosa dirti, a me funziona, a mary (pc win) funziona....
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 64 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
23/08/2017 18:46 | |
Ciao......se mi permettete vorrei provare un ultimo tentativo
ho notato che selezionando direttamente il numero in colonna B la ricerca in riga 1 funziona lo stesso
Non sapendo se il problema consiste nella cella F1 volevo sapere se sarebbe possibile effettuare la ricerca del numero , direttamente dal numero posizionato sulla stessa riga in colonna B sempre partendo al clic dalla colonna D
vi ringrazio molto
Saluti
Marilena |
| | Post: 1.568 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
23/08/2017 19:26 | |
ciao
funziona, ma non ti riporta il valore in f1.
A parte questo, quel codice "funziona" per una serie di eventi che non sto qui a spiegare (basta seguirlo in debug per vedere cosa accade).
Ciò premesso, il codice corretto (senza riportare in f1 il valore scelto) è il seguente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long
Application.EnableEvents = False
If Target.Column = 4 Then
mVar = Cells(Target.Row, 2)
rig = 1
For i = 7 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = mVar Then
Application.Goto Cells(1, i), True
Exit For
End If
Next i
End If
Application.EnableEvents = True
End Sub
Ma ho il sospetto che sia l'istruzione application.goto che al "mac" non vada bene.
Quando dici "non funziona" sul Mac che succede ? ignora l'istruzione o che altro ?
Seguilo in debug e fai qualche ricerca in internet o chiedi a qualche forum per il mac.
Personalmente non saprei proporti un "workaround" a quella istruzione.
Saluti
[Modificato da dodo47 23/08/2017 19:32] Domenico
Win 10 - Excel 2016 |
| | Post: 65 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
24/08/2017 11:11 | |
Magnifico ! Ora funziona meravigliosamente anche con Mac.
Il codice precedente ignorava l'istruzione, senza andare in debug.
Se ti va un ultimo favore dodo:
è possibile usare lo stesso sistema anche per cercare il valore in verticale partendo da un blocco riquadri sulla riga 55 colonna F ? magari usando "xlUp" al posto di "xlToleft " ?
ho provato a modificare Column con Row, xlToLeft con xlUp ma non riesco a farla funzionare
cari saluti e um milione di grazie
Marilena |
| | Post: 1.572 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
24/08/2017 12:52 | |
mary, non ho capito.
comunque sullo stesso foglio può esserci un solo blocco riquadri.
Fai un esempio ben chiaro per favore.
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 66 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
24/08/2017 19:52 | |
Ciao Rieccomi
lavorando oggi sul file sono riuscita a capire meglio quello che potrebbe essermi utile come possibile variante supplementare :
É possibile al posto delle colonne accostare le righe contenenti i numeri in colonna B alla cella 6B ? Selezionando al clic le celle sulla riga 4?
allego file di esempio
cari saluti
Marilena |
| | Post: 67 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
26/08/2017 15:22 | |
ciao a tutti
se è possibile vorrei sostituire la richiesta precedente con una al momento molto più prioritaria che mi sta bloccando il proseguimento del lavoro :-((((
la seguente macro di dodo cerca in riga 1 , al clic sulla colonna D , il valore inserito nella cella posta sulla stessa riga in colonna B e lo affianca alla cella F1
avendo la necessità di allungare di molto la lista posta in colonna D ho riscontrato il problema che se dovessi posizionare , per esempio : la cella D80 sotto il blocco riquadri in riga 1… , al clic mi sposta le righe precedentemente “scrollate “ , evidenziando la cella trovata in riga 1
però penso che potrei ovviare a questo problema se fosse possibile apportare una modifica alla macro che al posto di cercare il valore sempre in riga 1 ( come da me precedentemente richiesto ) , fare in modo che cerchi il valore posizionato sulla riga superiore alla cella selezionata in colonna D
ho provato a fare un file di esempio ,,,,,per favore fatemi sapere se è abbastanza chiaro perchè è importante !
cari saluti
un braccio a tutti
Marilena
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long
Application.EnableEvents = False
If Target.Column = 4 Then
mVar = Cells(Target.Row, 2)
rig = 1
For i = 8 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = mVar Then
Application.Goto Cells(1, i), True
Exit For
End If
Next i
End If
Application.EnableEvents = True
End Sub
|
| | Post: 1.574 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
26/08/2017 17:16 | |
ciao
mary, abbi pazienza; vuoi che cliccando per esempio su zz, la cella D80 si ponga immediatamente sotto il blocco riquadri ?
Se è così:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long
Dim mRiga As Long
Application.EnableEvents = False
mRiga = Target.Row
If Target.Column = 4 Then
mVar = Cells(Target.Row, 2)
rig = 1
For i = 8 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = mVar Then
Application.Goto Cells(mRiga, i), True
Exit For
End If
Next i
End If
Application.EnableEvents = True
End Sub
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 68 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
26/08/2017 18:23 | |
Grazie mille dodo per la pronta risposta
Visto che alla fine la lista in colonna D sarà piuttosto lunga, quello che vorrei ottenere è che il menu in colonna D rimarebbe nella posizione in cui lo lascio e sposterebbe solo le colonne
Anche se non so se è fattibile, pensavo che questa soluzione sarebbe stata più semplice visto che deve cercare un singolo valore su ogni riga sopra la cella selezionata.
Ma forse mi sbaglio !
Comunque chiedimi volentieri tutti i chiarimenti, che cerco di spiegarmi al meglio.
saluti e grazie
Marilena
|
| | Post: 1.577 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
26/08/2017 18:46 | |
ciao
ho capito, ma non sono in grado di aiutarti, sorry
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 558 | Registrato il: 02/08/2015
| Utente Senior | Excel 2013 | | OFFLINE |
|
27/08/2017 08:17 | |
Ciao a tutti,
ci ho messo una mezz'oretta per leggere tutte le modifiche della richiesta
Comunque, per l'ultima richiesta, si potrebbe usare "ScrollRow",
quindi al codice di Dodo (un saluto) basterebbe aggiungere una riga dopo il ciclo "For i....Next i":
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long
Application.EnableEvents = False
If Target.Column = 4 Then
mVar = Cells(Target.Row, 2)
rig = 1
For i = 8 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = mVar Then
Application.Goto Cells(1, i), True
Exit For
End If
Next i
ActiveWindow.ScrollRow = Target.Row
End If
Application.EnableEvents = True
End Sub
Ciao
Tore
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 69 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
27/08/2017 10:43 | |
ciao cromagno ti ringrazio tantissimo e sopratutto dodo per il grandissimo aiuto
il fatto é che su pc tutto ok ..il problema si pone su mac
se vi va di dare un ‘occhiata mi piacerebbe tanto fare un ultimo tentativo ..ho notato che con la macro di dodo se collego le celle in colonna dalla cella attiva fino alla riga 3 funziona perfettamente !
sapreste dirmi se si può aggiungere un codice al vba che cerchi in contemporanea lo stesso numero anche in colonna creando una sorta di riferimento X/Y ?
perchè in questo caso penso di risolvere posizionando il rispettivi valori anche in colonna
allego file con celle collegate
grazie mille a tutti
Marilena |
| | Post: 559 | Registrato il: 02/08/2015
| Utente Senior | Excel 2013 | | OFFLINE |
|
27/08/2017 10:56 | |
Ciao,
per il MAC non saprei che consigliarti non potendo provare di persona;
per la tua (ennesima ) richiesta... non ho capito cosa vuoi ottenere.
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 1.578 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
27/08/2017 13:07 | |
Ciao
neanche io ho possibilità di testare sul Mac. Pertanto se sul PC è ok, probabilmente (come già accennato in quanto letto in internet), è l'application.goto che non viene recepita.
Segui in debug e controlla se quella istruzione viene eseguita o no.
Io non conosco dei work-around per riprodurre l'effetto di tale istruzione.
Come ultimo tentativo, prova:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long
Application.EnableEvents = False
If Target.Column = 4 Then
mVar = Cells(Target.Row, 2)
rig = 1
For i = 8 To Cells(rig, Columns.Count).End(xlToLeft).Column
If Cells(rig, i) = mVar Then
Application.Goto Cells(1, i), True
Cells(Target.Row, i).Select '<<<<<<<<<<<<<<<<<<<<
Exit For
End If
Next i
End If
Application.EnableEvents = True
End Sub
Saluti
[Modificato da dodo47 27/08/2017 13:08] Domenico
Win 10 - Excel 2016 |
| | Post: 70 | Registrato il: 06/07/2016
| Città: BOLZANO | Età: 31 | Utente Junior | 2010 | | OFFLINE | |
|
27/08/2017 15:31 | |
di nuovo grazie dodo
domani appena rivado in ufficio provo
sarebbe troppo bello se funzionasse :-)
saluti
Marilena
|
|
|