| | Post: 1 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
01/12/2019 22:08 | |
Salve sono nuovo del forum, avrei neccessita' di nascondere un intervallo di righe nel foglio attivo in base al contenuto "vero o Falso" .Ovvero dalla riga 1623 alla 1639, come dicevo ,avendo neccessita' di cancellare o inserire nuove righe queste cambiano la loro posizione di origine continuamente.
ho fatto svariate prove ma non sono molto esperto del vba.
se qualcuno puo' aiutarmi!!??
grazie
|
|
| | Post: 1 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
01/12/2019 22:17 | |
una precizazione lavorando in un foglio che in seguito dovro' copiare e rinominare dovrei lavorare sul foglio attivo.
|
| | Post: 3.565 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
02/12/2019 08:38 | |
Buona giornata, Fabrizio; sarebbe opportuno allegassi un File (senza Dati sensibili) con alcuni Record significativi già inseriti e chiarissi ciò che desideri ottenere. Questo eviterebbe a chi desidera aiutarti dover ricostruire una probabile struttura con il rischio di non centrare l'obiettivo. Buon Lavoro. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 2 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
02/12/2019 18:50 | |
Inanzitutto GRAZIE.!!
Come richiesto ho allegato il file neccessario per capire la mia richiesta.
Nel file ho scoperto tutte le colonne , ma non tutte le righe.
Dalla riga 1625 alla 1641 appaiono delle categorie riassuntive.(...importi...incidenze..)
Quindi ho riservato in queste righe che di mano a mano
che inserisco delle categorie tra le varie voci queste si vanno a comporre.
Dalla cella "ab1625" alla "ab1641" ho inserito la formula Val.numero per identificare quali righe sono piene e quali vuote.
E come accennavo di man in mano che inserisco nuove righe nel foglio o le dovessi eliminare queste ovviamente cambiano la loro posizione.
Inoltre avrei l'esigenza di copiare il foglio ovviamente cambiandogli il nome Es 'Sal2', senza perdere la dinamicita' della formula.
In sostanza la mia richiesta sarebbe quella di nascondere in automatico quelle righe che risultano "FALSO" e quindi vuote.
GRAZIE... |
| | Post: 3.568 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
02/12/2019 20:44 | |
Buona sera, Fabrizio.
@fabrizio.ExcelForum, scrive:
... In sostanza la mia richiesta sarebbe quella di nascondere in automatico quelle righe che risultano "FALSO" e quindi vuote.
Non sono certo di aver interpretato correttamente la tua richiesta; azzarderei questo Codice VBA
Option Explicit
Option Compare Text
Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long
Range(Cells(1, 1), Cells(5000, 1)).EntireRow.Hidden = False
NrR = Range("B" & Rows.Count).End(xlUp).Row
Range(Cells(5, 1), Cells(1621, 1)).EntireRow.Hidden = True
Range(Cells(1624, 1), Cells(NrR, 1)).EntireRow.Hidden = True
For x = 1625 To NrR
If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
Next x
Application.ScreenUpdating = True
End Sub
Fai sapere se posso aiutarti più adeguatamente.
A disposizione.
Buon Lavoro.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 3 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
03/12/2019 18:48 | |
Salve Giuseppe, grazie per l'aiuto!!
ho provato il codice e ho visto che sta funzionando, pero' nella mia esigenza il codice dovrebbe agire dalla riga 1625 alla 1641, lasciando invariate le righe dalla n1 alla 1624.
GRAZIEE |
| | Post: 4.188 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
03/12/2019 19:00 | |
a questo punto potresti provare a modificare tu il codice in base alle tue esigenze
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 4 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
03/12/2019 19:12 | |
Be non sono molto esperto del vba e questo codice per me è come l'arabo...
Io sono ancora alle prime armi..
HELP!!! |
| | Post: 3.571 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
03/12/2019 19:15 | |
Buona sera, Fabrizio; per seguire il consiglio di @patel45, che saluto e ringrazio per l'attenzione, potresti considerare che il comando: Range(Cells(5, 1), Cells(1621, 1)).EntireRow.Hidden = True nasconde le Righe dalla 5 alla 1621. Analogamente per l'istruzione successiva. Modifica i Riferimenti secondo le tue reali necessità. A disposizione. Buona serata. Giuseppe [Modificato da GiuseppeMN 03/12/2019 21:52]
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 5 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
03/12/2019 19:30 | |
SALVE!
ho fatto questa modifica e il risultato mi soddisfa, unica cosa è che inserisco o elimino delle righe questi riferimenti vengono a cambiare.
Come dare i riferimenti che non abbiamo a cambiare ?
cioè per spiegare se elimino righe poi mi trovo invece della 1625 mi diventa la 1615??
Option Explicit
Option Compare Text
Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long
NrR = Range("B" & Rows.Count).End(xlUp).Row
Range(Cells(1625, 1), Cells(NrR, 1)).EntireRow.Hidden = True
For x = 1625 To NrR
If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
Next x
Application.ScreenUpdating = True
End Sub
grazie ancora!!!
|
| | Post: 3.572 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
03/12/2019 21:52 | |
Buona sera, Fabrizio.
Credo si debba trovare la Riga dalla quale partire; potresti provare con un Codice VBA di questo tipo:
Option Explicit
Option Compare Text
Sub Trova_prima_Riga()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long
NrR = Range("C" & Rows.Count).End(xlUp).Row
For x = 1 To NrR
If Cells(x, 5).Value = "Importi" Then Exit For
Next x
MsgBox x + 1
End Sub
Il valore indicato in MsgBox sarà la riga dalla quale partire; nel tuo esempio originale sarà 1625.
Ora prova ad aggiungere/eliminare un certo numeri di Righe, attiva nuovamente il Codice VBA sopra indicata e vedi cosa succede.
Buona serata.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 6 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
03/12/2019 22:16 | |
Salve Giuseppe, ho inserito e provato il codice e mi restituisce il messaggio, con la pozizione corretta della riga da cui partire...
Ho provato a cancellare e inserire righe e mi restituisce il messaggio con la posizione esatta.
|
| | Post: 7 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
03/12/2019 22:43 | |
Salve Giuseppe ,Ho provato a concludere il codice ma senza risultato...,
è oltre la mia esperienza ..
|
| | Post: 3.574 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
03/12/2019 23:40 | |
Buona sera, Fabrizio. @fabrizio.ExcelForum, scrive:
(in Risposta #12) Salve Giuseppe, ho inserito e provato il codice e mi restituisce il messaggio, con la pozizione corretta della riga da cui partire... Ho provato a cancellare e inserire righe e mi restituisce il messaggio con la posizione esatta.
(in Risposta #13) Salve Giuseppe ,Ho provato a concludere il codice ma senza risultato...,
ok, vista la tua buona volontà, vediamo di fare un passo avanti assieme: prova a considerare di anteporre al Codice VBA che "nasconde le Righe proposto in Risposta #5" il Codice VBA proposto in Risposta #11 avendo l'avvertenza di sostituire la Variabile "x" con altra Variabile, supponiamo "y". A questo punto y+1 identificherà la Riga dalla quale partire; se sostituisci il Ciclo: con il Ciclo: Sinceramente non ho condotto dei Test appropriati ma dovrebbe funzionare correttamente. Buona serata. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 8 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
04/12/2019 14:05 | |
Salve Giuseppe ho provato , ma purtroppo non capisco come antepore il codice; copio un codice e poi l'altro con le modifiche di cui parlavi,ma non mi funziona, basta una virgola di troppo e non funziona.
Mi potresti scrivere il codice corretto??
grazie
|
| | Post: 3.575 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
04/12/2019 16:46 | |
Buona sera, Fabrizio;
pensavo ad un Codice VBA di questo tipo:
Option Explicit
Option Compare Text
Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long, y As Long
Range(Cells(1, 1), Cells(5000, 1)).EntireRow.Hidden = False
NrR = Range("B" & Rows.Count).End(xlUp).Row
For y = 1 To NrR
If Cells(y, 5).Value = "Importi" Then Exit For
Next y
Range(Cells(y + 1, 1), Cells(NrR, 1)).EntireRow.Hidden = True
For x = y + 1 To NrR
If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
Next x
Application.ScreenUpdating = True
End Sub
Da testare sul tuo File reale.
Buon Lavoro.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 9 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
04/12/2019 20:07 | |
Option Explicit
Option Compare Text
Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long, y As Long
NrR = Range("B" & Rows.Count).End(xlUp).Row
For y = 1 To NrR
If Cells(y, 5).Value = "Importi" Then Exit For
Next y
Range(Cells(y + 1, 1), Cells(NrR, 1)).EntireRow.Hidden = True
For x = y + 1 To NrR
If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
Next x
Application.ScreenUpdating = True
End Sub
Ho fatto una piccola modfica al codice e adesso funziona tutto! |
| | Post: 10 | Registrato il: 04/03/2017
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
04/12/2019 20:10 | |
GRAZIE TANTE GIUSEPPE da solo non sarei riuscito!! |
|
|