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

Lanciare due macro contemporaneamente al semplice o doppio click

Ultimo Aggiornamento: 30/08/2017 19:38
Post: 74
Registrato il: 06/07/2016
Città: BOLZANO
Età: 31
Utente Junior
2010
OFFLINE
29/08/2017 13:56

Ciao a tutti

È possibile unire queste due macro in modo che vengano lanciate contemporaneamente al semplice o doppio clic sulle celle in colonna 8 ?
La seconda macro che cerca in colonna ho provato a modificarla io prendendo spunto dalla prima ... funziona , ma sinceramente non saprei se è scritta in modo corretto o no :-(

Ringrazio di cuore ogni aiuto
Mary



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 = 8 Then
mVar = Cells(Target.Row, 6)
rig = 1
For i = 11 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
Application.EnableEvents = True
End If
End Sub

***************

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long
If Target.Column = 8 Then
mVar = Cells(Target.Row, 4)
col = 2
For i = 3 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, col) = mVar Then
Application.Goto Cells(i, 2), True
Exit For
End If
Next i
Application.EnableEvents = True
End If
End Sub



Post: 3.418
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
29/08/2017 19:21

Ciao Marilena

Le procedure evento come SelectionChange, Change etc. devono essere uniche per ogni foglio quindi come hai fatto tu scrivendone due è concettualmente sbagliato.

Si dovrebbe scrivere più o meno così dove macro1 e macro2 sono le procedure da eseguire

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call macro1
Call macro2
End Sub

Ora sono fuori sede e non ho pc per cui di più non riesco a dire.

Alfredo
Post: 529
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
29/08/2017 19:46

Un saluto a tutti.
In linea con il concetto di alfrimpa, la cui finalità è scrivere il codice in modo più "pulito", puoi anche semplicemente unire le due macro così:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim i As Long, mVar
    Dim col As Long
    Dim rig As Long
    
    If Target.Column = 8 Then
        Application.EnableEvents = False
        mVar = Cells(Target.Row, 6)
        rig = 1
        For i = 11 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
        
        mVar = Cells(Target.Row, 4)
        col = 2
        For i = 3 To Cells(Rows.Count, 2).End(xlUp).Row
            If Cells(i, col) = mVar Then
                Application.Goto Cells(i, 2), True
                Exit For
            End If
        Next i
        Application.EnableEvents = True
    End If

End Sub
[Modificato da rollis13 29/08/2017 19:48]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 74
Registrato il: 06/07/2016
Città: BOLZANO
Età: 31
Utente Junior
2010
OFFLINE
29/08/2017 21:06

Mille grazie rollis e alfrimpa

Purtroppo ho a che fare con mac che è bello da vedere ma mi sta sempre più sulle p.... anche se non ce le ho :-)
Esistono alternative per collegare le due macro?
Separatamente le ho testate e funzionano benissimo.

Mary
Post: 3.419
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
29/08/2017 21:44

Marilena ma hai provato la macro di Rollis13?

A quanto ne so dovrebbe funzionare anche su Mac

Alfredo
Post: 75
Registrato il: 06/07/2016
Città: BOLZANO
Età: 31
Utente Junior
2010
OFFLINE
29/08/2017 21:54

Sí certo Alfrimpa che l'ho provata ! Mi sono portata apposta a casa il Mac dall'ufficio.
Separatamente funzionano benissimo. Se le inverto funziona sempre solo quella posizionata in basso

Saluti
Mary
Post: 417
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
29/08/2017 23:37

Salve a tutta la bella compagnia

Credo che il problema, se ho capito le intenzioni, sia la mancanza della dichiarazione dell'obiettivo da parte di Mary-92

Sempre se ho capito bene, credo che, una volta individuata una uguaglianza bisogna selezionare una certa cella. A questo punto credo che nella macro (unica, e ci mancherebbe) di Rollis basta sostituire quei due Exit For con Exit Sub.

Cioè, non appena c'è un riscontro la macro finisce. Sta a Marilena sapere se è più conveniente "spazzolare" prima le righe oppure le colonne.

Sempre se ho capito.

Ciao a tutti,
Mario
Post: 76
Registrato il: 06/07/2016
Città: BOLZANO
Età: 31
Utente Junior
2010
OFFLINE
30/08/2017 19:38

ciao a tutti

in risposta a Mario ,che ringrazio tanto di essere intervenuto , volevo precisare che questo post nasce dal precedente post ( Riporta valore posizionato in colonna B in cella F1 ) che avevo postato in precedenza ma che mi sono resa conto di essere uscita troppo dal tema del titolo,per questo ho preferito iniziarne uno nuovo .
Ho passato tutto il giorno a estrapolare righe da ogni codice che mi avete fornito finora e da ricerche internet raccimolando un patchwork di codice che però sembra funzionare :-) …….. sicuramente non è perfetto perché ad ogni selezione in colonna “ H “ … lascia la colonna precedente visibile mentre avrei voluto che sia visibile direttamente la colonna col valore scelto subito dopo la decima ” J “ ma comunque in mancanza d’altro posso conviverci .
Il seguente codice praticamente lancia la seconda macro al change del valore della cella B2 riposizionando il menù selezionato

Se comunque qualcuno desidera darci un occhio ..ogni consiglio o miglioramento a riguardo non può che farmi enorme piacere
allego il file nella speranza che qualcun detentore di mac con office 2011 possa in qualche modo servire


ciao
cari saluti e grazie
Marilena


Vba inserito nel foglio:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, mVar
Dim col As Long
Dim rig As Long

If Target.Column = 8 Then

Cells(2, 2) = Cells(Target.Row, 4).Value
Cells(2, 2).Select
mVar = Cells(Target.Row, 6)
rig = 1
For i = 11 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
Range("b2").Select
If Target <> "" Then Call cerca_valore

End If
End Sub



Vba inserito nel modulo:

Sub cerca_valore()
Set Target = Range("B2")
col = Target.Column
For i = 5 To Cells(Rows.Count, col).End(xlUp).Row
If Cells(i, col) = Target.Value Then Exit For
Next i
Cells(5, col).Select
ActiveWindow.SmallScroll Down:=i - 5
End Sub
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]
File Autocompilante (3 messaggi, agg.: 05/07/2018 07:26)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:58. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com