Per ottenere quello che chiedi devi far ricorso al VBA
La prima cosa che mi viene in mente è di generare una routine d'evento
Change legata al valore corrente della cella A1.
Se invece ti occorre una funzione, potresti creartene una che ti gestisca la
visualizzazione della riga o della colonna direttamente da Excel e che
magari ti informi della stato attuale (ad esempio: "Colonna B nascosta";
"Colonna B visibile")
--
Ciao
Ignazio
>-----Messaggio originale---
>.
>
Per quello che so io, una funzione tipo quella che tu scrivi non esiste in
Excel.
Quando in precedenza ti scrivevo
----
Se invece ti occorre una funzione, potresti creartene una che ti gestisca la
visualizzazione della riga o della colonna direttamente da Excel e che
magari ti informi della stato attuale (ad esempio: "Colonna B nascosta";
"Colonna B visibile")
----
pensavo ad una funzione scritta in VBA che facesse ciň che chiedevi.
In realtŕ, dalle prove che ho fatto succesivamente, mi sono reso conto che
ciň non č possibile.
Comunque, se ti interessa, ti scrivo la rouitne d'evento VBA che fa al caso
tuo:
-------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Num As Double
'
On Error GoTo Mostra
If Target.Address = "$A$1" Then
Num = Range("A1")
If Num > 2 Then
Columns("B:B").EntireColumn.Hidden = True
Else
GoTo Mostra
End If
End If
Exit Sub
Mostra:
Columns("B:B").EntireColumn.Hidden = False
End Sub
-------
per inserirla devi fare tasto destro sul foglio in questione e scegliere
"visualizza codice", quindi inserire il codice scritto.
Quindi torna ad Excel e comincia ad inserire in A1 dei valori (1,2,3, ...) o
anche del testo (a,b, ...) per vedere come funziona.
--
Ciao
Ignazio
> per inserirla devi fare tasto destro sul foglio in questione
č piů preciso dire:
"per inserirla devi fare tasto destro sulla linguetta del foglio in
questione"
>-----Messaggio originale---
>
>"Ignazio" <i_putign...@SeScriviAvirgilio.it> ha
scritto nel messaggio
>news:%23wkZgfz...@TK2MSFTNGP12.phx.gbl...
>
>> per inserirla devi fare tasto destro sul foglio in
questione
>
>è più preciso dire:
>"per inserirla devi fare tasto destro sulla linguetta del
foglio in
>questione"
>
>
>.
>
>-----Messaggio originale---
>
>"Ignazio" <i_putign...@SeScriviAvirgilio.it> ha
scritto nel messaggio
>news:%23wkZgfz...@TK2MSFTNGP12.phx.gbl...
>
>> per inserirla devi fare tasto destro sul foglio in
questione
>
>è più preciso dire:
>"per inserirla devi fare tasto destro sulla linguetta del
foglio in
>questione"
>
>
>.
>
Per poterti aiutare avrei bisogno di alcune informazioni.
Nella colonna B i numeri li inserisci manualmente o sono il risultato di
formule?
Se li inserisci manualmente, quando ad esempio nella cella B2 scrivi 0 e la
riga 2 scompare, non hai succesivamente l'esigenza di scrivere un valore
diverso da zero e quindi far comparire nuovamente la riga 2?
Se è così, come fai dato che la riga 2 è nascosta?
Una possibile soluzione potrebbe essere quello di utilizzare 2 Fogli, uno
per l'Input (in cui tutte le righe sono visibili) ed un'altro per l'Output
(in cui compaiono solo le righe dove nella colonna B il numero è diverso da
zero), ma non so se questo è compatibile con il resto del tuo lavoro.
Fammi sapere
--
Ciao
Ignazio
Per poterti aiutare avrei bisogno di alcune informazioni.
Nella colonna B i numeri li inserisci manualmente o sono
il risultato di
formule?
SONO IL RISULTATO DI FORMULE (comunque posso convertirli
con una formula in numeri)
Se li inserisci manualmente, quando ad esempio nella cella
B2 scrivi 0 e la
riga 2 scompare, non hai succesivamente l'esigenza di
scrivere un valore
diverso da zero e quindi far comparire nuovamente la riga
2?
QUELLO CHE COMPARE NELLA CELLA B2 E' UN VALORE RICHIAMATO
DA UN ALTRO FOGLIO, QUINDI VARIA AUTOMATICAMENTE
Se è così, come fai dato che la riga 2 è nascosta?
Una possibile soluzione potrebbe essere quello di
utilizzare 2 Fogli, uno
per l'Input (in cui tutte le righe sono visibili) ed
un'altro per l'Output
(in cui compaiono solo le righe dove nella colonna B il
numero è diverso da
zero), ma non so se questo è compatibile con il resto del
tuo lavoro.
Fammi sapere
Spero di essermi spiegato abbastanza, se hai bisogno di
altri chiarimenti...sono qui
Grazie ancora, ciao
>-----Messaggio originale---
>.
>
> SONO IL RISULTATO DI FORMULE (comunque posso convertirli
> con una formula in numeri)
Vediamo se ho capito bene.
Nel range compreso tra la cella B1 e la cella B100 ci sono delle formule che
danno come risultato dei numeri.
Nel caso in cui questi numeri sono uguali a zero, vuoi che la relativa riga
venga nascosta.
Se è così, supponiamo che il foglio in questione sia il Foglio2 (se il nome
è diverso nel codice che segue sostituisci Foglio2 con il nome che stai
utilizzando).
Ecco il codice che potresti utilizzare (da inserire in un modulo):
-------
Sub NascondiZeri()
Dim Zona As Range
Dim Cella As Range
'
Set Zona = Sheets("Foglio2").Range("B1:B100")
For Each Cella In Zona
If Cella.Value = 0 Then
Cella.EntireRow.Hidden = True
Else
Cella.EntireRow.Hidden = False
End If
Next
End Sub
-------
Questa routine va lanciata manualmente o associata ad un pulsante.
Se la volessi renderla automatica, la potresti legare all'evento Calculate
del foglio in questione inserendovi il codice:
-------
Private Sub Worksheet_Calculate()
NascondiZeri
End Sub
-------
Tieni comunque presente che se utilizzi questo evento, ogni volta che nel
foglio viene eseguito il calcolo di una formula, il codice viene eseguito.
Quindi, se nel foglio sono presenti altre formule, la routine potrebbe
essere eseguita anche quando non sarebbe necessario, con conseguente inutile
rallentamento del calcolo.
Fammi sapere se hai risolto.
--
Ciao
Ignazio
>-----Messaggio originale---
>
>.
>
> Mi complimento ancora per la tua profonda conoscenza del VB
Ti ringrazio, ... ma non è il caso di esagerare.
Non sono affatto un "profondo conoscitore" del VBA.
> probabilmente ti disturberò ancora per i miei continui problemi.
"disturba" pure :-)
--
Ciao
Ignazio