Modifica comando VBA

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
melaverde74
00martedì 24 maggio 2016 18:49
Ciao Forum

Dispongo di un file che scopre e nasconde delle righe al doppio click sulle celle B3:B12 e avrei la necessità di dover spostare questo comando in orizzontale alla riga F2:O2.
Ho provato da solo a modificare la formula ma non ce l’ho fatta. Qualcuno saprebbe indicarmi un soluzione?

Allego file

Grazie, saluti
Simone
dodo47
00martedì 24 maggio 2016 19:04
Ciao
se le righe da nascondere sono sempre quelle:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(("F2:O2"))) Is Nothing Then
  R = Target.Row
  
    RGI = ((5 * 2) * (R - 2)) + (9 + (R - 1))
        RGF = ((5 * 2) * (R - 1)) + (9 + (R - 1))
    Rows("22:132").EntireRow.Hidden = True
    Range("F1:O1") = "CHIUDI"
        Rows(RGI & ":" & RGF).EntireRow.Hidden = False
        Cells(1, Target.Column) = "APRI"
        Cells(1, 1) = RGI
        R = RGI + 2
        End If
Cancel = True
End Sub


Nella tua macro manca il Cancel=True finale

saluti
melaverde74
00martedì 24 maggio 2016 20:19
ciao dodo 47
ti ringrazio tantissimo per la veloce risposta
ho provato a inserire i nuovi codici ma non mi aprono e chiudono le righe
ho sbagliato in qualcosa?

ciao grazie

Simone
rollis13
00martedì 24 maggio 2016 22:57
Probabilmente solo un piccolo refuso:

R = Target.Row

deve diventare

R = Target.Column
melaverde74
00mercoledì 25 maggio 2016 08:22
Grazie mille, funziona!!!
Mi sono reso conto che avrei bisogno di uno spazio di una cella tra un numero e l’altro. Ho provato a modificare il Vba cosí come segue ( vedi allegato ) ma mi calcola sempre come se fossero ancora collegate una a fianco all'altra.
Non riesco a capire dove sbaglio. Bisogna forse aggiungere qualche cosa?

Saluti
Simone
dodo47
00mercoledì 25 maggio 2016 09:38
Ciao
....
If Not Intersect(Target, Range(("F1,H1,J1,L1,N1,P1,R1,T1,V1,X1"))) Is Nothing Then
....

riga: R = RGI + 2 a che serve??

saluti

@Rollis: grazie per aver definito "refuso" l'età avanzata! [SM=x423070]
melaverde74
00mercoledì 25 maggio 2016 14:58
Grazie Domenico,

nel file allegato avevo messo la stessa sequenza ma non funziona. Cliccando sulla cella H2 mi scopre le righe come se avessi premuto la cella J2.

Per quello che riguarda ( riga: R = RGI + 2 ) non serve lo aggiunto con un copia incolla per sbaglio.


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(("F2,H2,J2,L2,N2,P2,R2,T2,V2,X2"))) Is Nothing Then
R = Target.Column

RGI = ((5 * 2) * (R - 2)) + (9 + (R - 1))
RGF = ((5 * 2) * (R - 1)) + (9 + (R - 1))
Rows("22:132").EntireRow.Hidden = True
Range("F1,H1,J1,L1,N1,P1,R1,T1,V1,X1") = "CHIUDI"
Rows(RGI & ":" & RGF).EntireRow.Hidden = False
Cells(1, Target.Column) = "APRI"
Cells(1, 1) = RGI
End If
Cancel = True
End Sub


Saluti Simone
dodo47
00mercoledì 25 maggio 2016 16:14
Ciao
probabilmente non riesco a capire io. La macro del tuo 2° file secondo me funziona. in H scopre 76>86 in J scopre 98>108.

Esegui questo codice che nelle righe 3 e 4 di ciascuna colonna riporta le righe che scopre.
Poi dal codice elimina le due righe segnalate con '<<<<<

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(("F2,H2,J2,L2,N2,P2,R2,T2,V2,X2"))) Is Nothing Then
  R = Target.Column
   
    RGI = ((5 * 2) * (R - 2)) + (9 + (R - 1))
    RGF = ((5 * 2) * (R - 1)) + (9 + (R - 1))
    
    Cells(3, Target.Column) = RGI '<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Cells(4, Target.Column) = RGF '<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    
    Rows("22:132").EntireRow.Hidden = True
    Range("F1,H1,J1,L1,N1,P1,R1,T1,V1,X1") = "CHIUDI"
        Rows(RGI & ":" & RGF).EntireRow.Hidden = False
        Cells(1, Target.Column) = "APRI"
        Cells(1, 1) = RGI
        R = RGI + 2
        End If
Cancel = True
End Sub


saluti
melaverde74
00mercoledì 25 maggio 2016 17:47
Grazie Domenico per la formula che hai inserito per individuare le righe che scopre, cosí forse riesco a spiegarmi meglio.
Il problema che ho riscontrato, avendo inserito una cella di spazio tra una e l’altra, è quello che mi salta via le 10 righe mancanti.

Dal file allegato quando clicco su una delle celle F2,H2, J2,L2,N2,P2,R2,T2,V2,X2 il risultato che vorrei ottenere è quello contenuto nelle righe 6 e 7 e non quello che ottengo al momento.

Saluti Simone
rollis13
00mercoledì 25 maggio 2016 19:40
Inserendo delle colonne vuote nella zona "trigger" bisogna ora rifare completamente le due formule che partendo dal numero (R) della colonna cliccata determinano le righe da lasciare visibili:
    RGI = ((5 * 2) * (R - 2)) + (9 + (R - 1))
    RGF = ((5 * 2) * (R - 1)) + (9 + (R - 1))
Queste due righe generano le coordinate inserite in:
   Rows(RGI & ":" & RGF).EntireRow.Hidden = False
melaverde74
00venerdì 27 maggio 2016 08:17
GRAZIE PER IL SUGGERIMENTO :-) è stata dura ma alla fine ce l'ho fatta a modificarla !!

volevo chiedervi una cosa

è possibile modificare questa formula che agisca per aprire e chiudere invece delle righe le colonne??? o addirittura entrambi che con un doppio click alla cella chiudo e apro righe e colonne ?

grazie ancora

un buon fine settimana a tutti

Simone
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 05:52.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com