Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

dopo il doppio click ......

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

dopo il doppio click ......

Postdi papiriof » 03/06/20 12:39

Vorrei una mano per realizzare una macro d'evento:
Ho questa situazione 5 colonne e 10 righe + altre 2 successive righe di cui una vuota e l'altra con dei numeri tipo questa
36 29 56 24 12 le ultime due righe ancorchè ci sono ai miei effetti e come se non ci fossero essendo la riga 10
21 17 30 84 44 l'ultima da considerare 1° esempio faccio doppi click sul primo numero cioè sul 36 la macro a questo punto
20 38 9 39 85 dare un messaggio : " il ritardo del 36 su questa colonna e : 0 " ovvero il numero che ho doppiocliccato è
84 35 88 46 48 l'ultimo uscito 2° esempio faccio doppi click sul secondo numero cioè sul 29 la macro dovrebbe darmi
31 29 30 71 54 il messaggio: " il ritardo del 29 su questa colonna e : 5 "
70 41 79 42 20 3° es faccio doppi click sul terzo numero cioè sul 56 la macro dovrebbe darmi " il ritardo del 56 su
22 32 4 38 76 questa colonna è : 9" cioè sono 9 volte che è assente.
78 48 43 24 6
19 37 25 50 63
36 12 60 6 49

20 74 62 74 14
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: dopo il doppio click ......

Postdi Anthony47 » 03/06/20 14:40

Illeggibile...
E poi, perche' il ritardo del 56 dovrebbe essere 9?
Avatar utente
Anthony47
Moderatore
 
Post: 17667
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dopo il doppio click ......

Postdi papiriof » 03/06/20 15:12

Anthony47 ha scritto:Illeggibile...
E poi, perche' il ritardo del 56 dovrebbe essere 9?
perchè deve contare dall'ultima volta che è uscito supponiamo che il 56 è uscito in C1 contiamo da c2 ...è uscito? no e allora inizia il conteggio 1 vediamo c3 , non è uscito allora 2 ecc ma se in c5 fosse uscito e fosse stata l'ultima volta che è uscito allora ricomincerebbe il conteggio e mi dovrebbe dare 5 esattamente come nell'esempio del 29
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi Anthony47 » 03/06/20 15:42

Per quello che ho capito:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lFor As Object, myMatch
'
Set lFor = Range(Target.Cells(2, 1), Target.Cells(2, 1).End(xlDown))
myMatch = Application.Match(Target.Value, lFor, False)
If IsError(myMatch) Then myMatch = ">" & lFor.Rows.Count
MsgBox ("Ritardo del " & Target.Value & ": " & myMatch)
Cancel = True
End Sub

Va inserito nel modulo vba del foglio su cui lavori; partendo da Excel:
a) Tasto destro sul Tab col nome del Foglio a cui il codice va agganciato
b) Scegliete Visualizza codice
In questo modo si aprira' l'ambiente Vba direttamente sul modulo di classe in cui il codice va inserito

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17667
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dopo il doppio click ......

Postdi papiriof » 03/06/20 16:31

Grazie Anthony va più che bene|||| Sei il migliore :) :) :)
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi papiriof » 23/09/20 12:17

Riprendo questa discussione per chiedere se fosse possibile fare una macro identica a quella fatta da Anthony per un singolo numero ma per un intervallo di 25 numeri nel file allegato spero di essere più chiaro

http://www.filedropper.com/xforum25
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi Anthony47 » 23/09/20 13:30

Non ho capito come vuoi rappresentare i risultati, quindi per ora li mettiamo in Riga2 sopra ogni numero controllato. La macro:
Codice: Seleziona tutto
Sub PapiRow()
Dim I As Long, myMatch
'
For I = 9 To (9 + 24)
    Set lFor = Range(Cells(4, I), Cells(4, I).End(xlDown))
    myMatch = Application.Match(Cells(3, I).Value, lFor, False)
    If IsError(myMatch) Then myMatch = ">" & lFor.Rows.Count
    Cells(2, I).Value = "Rit " & Cells(3, I).Value & ": " & myMatch
Next I
End Sub

Metti il codice in un modulo standard e poi avvia la macro come meglio preferisci

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17667
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dopo il doppio click ......

Postdi papiriof » 23/09/20 18:55

Anthony47 ha scritto:Non ho capito come vuoi rappresentare i risultati, quindi per ora li mettiamo in Riga2 sopra ogni numero controllato. La macro:
Codice: Seleziona tutto
Sub PapiRow()
Dim I As Long, myMatch
'
For I = 9 To (9 + 24)
    Set lFor = Range(Cells(4, I), Cells(4, I).End(xlDown))
    myMatch = Application.Match(Cells(3, I).Value, lFor, False)
    If IsError(myMatch) Then myMatch = ">" & lFor.Rows.Count
    Cells(2, I).Value = "Rit " & Cells(3, I).Value & ": " & myMatch
Next I
End Sub

Metti il codice in un modulo standard e poi avvia la macro come meglio preferisci

Ciao

Non mi sono spiegato bene nel foglio chieevo:"Quello che chiederei, se fosse possibile, è fare la stessa
cosa contemporaneamente per tutti i 25 numeri
dell'ntervallo che andrei a selezionare . Perciò l'intervallo da esaminare non deve intendesi SEMPRE
I3:AG3 ma quello ch vado a selezionare fermo restando che deve iniziare con la col " I " e terminare con la col " AG " es: I4:AG4 o I5:AG5 ecc . Per quanto riguarda dove posizionare i risultati va bene dove li hai messi (riga 2)
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi Anthony47 » 23/09/20 21:21

Allora:
Codice: Seleziona tutto
Sub PapiRowSel()
Dim I As Long, myMatch, cRow As Long
'
cRow = Selection.Cells(1, 1).Row
Range("I2:AG2").ClearContents
For I = 9 To (9 + 24)
    Set lFor = Range(Cells(cRow + 1, I), Cells(cRow + 1, I).End(xlDown))
    myMatch = Application.Match(Cells(3, I).Value, lFor, False)
    If IsError(myMatch) Then myMatch = ">" & lFor.Rows.Count
    Cells(2, I).Value = "Rit " & Cells(cRow, I).Value & ": " & myMatch
Next I
End Sub

Devi selezionare una cella qualsiasi della riga e avviare la macro

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17667
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dopo il doppio click ......

Postdi papiriof » 23/09/20 23:35

Che dire? secondo me bravo come sempre !!!!
Grazie Anthony
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi papiriof » 24/09/20 09:23

Da un più attento esame sembra non funzionare - Ho fatto questa prova naturalmente ho fotto un bottone per lanciare la macro
quindi ho selezionato la cella " I 86 " nell' intento di focalizzare l'intervallo I86:AG86 cioè dove mancano 17 estrazioni alla fine (riga 103) E' evidente che mi serai dovuto aspettare di tutti e 25 la maggioranza ritardo 17 ma non è detto ho controllato a campione e in AD86 abbiamo il numero 69 con un ritardo 17 ma in AD 96 abbiamo il numero 69 perciò il ritardo che mi avrebbe dovuto segnalare era ritardo 10 .as onor del vero la macro l'ho leggermente cambiata per far in modo di vedere l'essenziale cosi , non penso sia per questo
Sub PapiRowSel()
Dim I As Long, myMatch, cRow As Long
'
cRow = Selection.Cells(1, 1).Row
Range("I2:AG2").ClearContents
For I = 9 To (9 + 24)
Set lFor = Range(Cells(cRow + 1, I), Cells(cRow + 1, I).End(xlDown))
myMatch = Application.Match(Cells(3, I).Value, lFor, False)
If IsError(myMatch) Then myMatch = "." & lFor.Rows.Count
Cells(2, I).Value = " " & Cells(cRow, I).Value & ":" & myMatch
Next I
End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi papiriof » 24/09/20 15:30

Nel file ho inserito al foglio 1 la Private Sub per controllare singolarmente il ritardo per cui una volta lanciata la macro e generato al rigo 2 i 25 numeri con i rispettivi ritardi li vado a controllare singolarmente con il doppio clic .Ebbene solo nel caso della selezione sulla riga 3 mi da i risultati esatti nelle righe sottostanti invece i ritardi sono errati percomodita allego il file


http://www.filedropper.com/x2forum25
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi papiriof » 25/09/20 17:08

Anthony47 ha scritto:Allora:
Codice: Seleziona tutto
Sub PapiRowSel()
Dim I As Long, myMatch, cRow As Long
'
cRow = Selection.Cells(1, 1).Row
Range("I2:AG2").ClearContents
For I = 9 To (9 + 24)
    Set lFor = Range(Cells(cRow + 1, I), Cells(cRow + 1, I).End(xlDown))
   [b][color=#FF0000] myMatch = Application.Match(Cells(3, I).Value, lFor, False)[/color][/b]
    If IsError(myMatch) Then myMatch = ">" & lFor.Rows.Count
    Cells(2, I).Value = "Rit " & Cells(cRow, I).Value & ": " & myMatch
Next I
End Sub

Devi selezionare una cella qualsiasi della riga e avviare la macro

Ciao

Gentile sig Anthony sono riuscito a capire perchè la macro non va come io vorrei la riga colorata in rosso e precisamente dove dice
"Cells(3, I).Value" quel 3 fa si il conteggio voluto parta sempre dalla riga 3 infatti se voglio sottola lente la riga 4 ho provato a mettere 4 al posto di 3 e i conteggi me li da esatti, ma non posso cambiare ogni volta numero :oops: .
Perciò ho pensato che al posto di quel 3 ci dovrebbe essere una variabile che individuasse il nunero di riga che seleziono di volta in volta o sbaglio? Il problema è che non lo so fare :(
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi papiriof » 25/09/20 19:18

E invece ci sono riuscito :D :D :D
Sub PapiRowSel()
Dim I As Long, myMatch, cRow As Long, x As Long
x = ActiveCell.Row
cRow = Selection.Cells(1, 1).Row
Range("I2:AG2").ClearContents
For I = 9 To (9 + 24)
Set lFor = Range(Cells(cRow + 1, I), Cells(cRow + 1, I).End(xlDown))
myMatch = Application.Match(Cells(x, I).Value, lFor, False)
If IsError(myMatch) Then myMatch = "." & lFor.Rows.Count
Cells(2, I).Value = " " & Cells(cRow, I).Value & ":" & myMatch
Next I
End Sub
Ho aggiunto la variabile x ..........x = ActiveCell.Row e al posto di 3 ho messo la x
E' meglio quando ci arrivo da solo :lol: :lol:
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 284
Iscritto il: 16/02/10 13:23

Re: dopo il doppio click ......

Postdi Anthony47 » 25/09/20 23:38

Bravo...
Avrei dovuto usare anche in quella istruzione la variabile cRow, che già contiene quello che poi hai calcolato in X

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17667
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "dopo il doppio click ......":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti