Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Collegare due macro

Ultimo Aggiornamento: 25/07/2018 12:10
Post: 97
Registrato il: 06/07/2016
Città: BOLZANO
Età: 31
Utente Junior
2010
OFFLINE
24/07/2018 17:00

Ciao a tutti.
Sapreste dirmi come posso collegare queste due macro ?
Visto che posso mettere un solo " Private Sub Worksheet_Change(ByVal Target As Range)"


Grazie per un vostro aiuto
Marilena



Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("F7:M7")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

Sheets("Foglio2").Range("B1") = Target.Value

If Target <> "orario" Then Call copia




If Not Intersect(Target, Range("FF:FF")) Is Nothing Then

If Target.Offset(2, 0) <> "" Then
Target.Offset(-2, 0).Value = "seleziona"


If Target.Offset(0, 1).Value = "." Then
Target.Offset(-4, 0).ClearContents
Target.Offset(-6, 0).ClearContents
Target.Offset(-8, 0).ClearContents


End If
End If
End If

End Sub
Post: 584
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
24/07/2018 17:32

Ciao Marilena
Intanto un consiglio. Guarda a questo indirizzo: https://rubberduckdebugging.com/

Cosa ti suggerisce? Ripeti passo passo il tuo codice è controlla se ci sono errori oppure cose che non ... tornano.

Ciò premesso, veniamo alla tua macro
Private Sub Worksheet_Change(ByVal Target As Range)
E' ovvio che questa riga è OK

If Intersect(Target, Range("F7:M7")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
Stai dicendo ad Excel se sei inquesto intervallo o se hai selezionato più di una cella, esci dalla sub. Ed anche questa riga va bene.

Sheets("Foglio2").Range("B1") = Target.Value
If Target <> "orario" Then Call copia

Ipotizziamo che hai cambiato qualcosa nella cella F5. Visto che non è compresa nell'intervallo ed è solo una cella, scrive in B1 di Foglio2 il valore che hai modificato e se detto valore è "orario" richiama la macro copia. E fin qui tutto OK.
Diciamo tutto OK se hai selezionato SOLO una cella, ma se ne hai selezionate due e cancellato i valori mi pare che non ci siamo.

Il seguito vale se cambi valore ad una cella della colonna FF

Non capisco cosa intendi quando dici:

Visto che posso mettere un solo " Private Sub Worksheet_Change(ByVal Target As Range)"



Ciao,
Mario
Post: 97
Registrato il: 06/07/2016
Città: BOLZANO
Età: 31
Utente Junior
2010
OFFLINE
25/07/2018 12:10

Grazie mille Mario per i tuoi preziosi consigli [SM=x423063]
La “ Rubber Duck” non c’è l’ho ma per fortuna ci sono i miei angioletti


Non so se tecnicamente è corretto ma sembra funzionare. Cosa ne pensi?



Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range(“F:M")) Is Nothing Then Exit Sub
Sheets("Foglio2”).Range("B1") = Target.Value
If Target <> "orario" Then Call riporta


If Target.Offset(2, 0) <> "" Then
Target.Offset(-2, 0).Value = "seleziona"

If Target.Offset(0, 1).Value = "." Then
Target.Offset(-4, 0).ClearContents
Target.Offset(-6, 0).ClearContents
Target.Offset(-8, 0).ClearContents

End If
End If
End Sub


Saluti
Marilena
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:39. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com