in A1 ho impostato un formattazione condizionale in modo tale che se la
cella contiene "MO" si tinge lo sfondo di rosa e il testo � rosso, se
invece contiene "ME" di verde col testo nero etc.
Vorrei che "tutte le celle di quella riga" (A2-A3-a4 etc) al momento in
cui digito in A1 MO O ME assumino la stessa formattazione di A1.
E' possibile ciao
--
|X|O|O|
|O|X|X|
|X|X|O|
"A strange game.
The only winning move is not to play
How about a nice game of chess"
>Ciao,
>non sto venendo a capo di una soluzione che secondo me � immediata.
Anche secondo me...
>In excel 2007 vorrei un metodo che in base al contenuto di una ne
>formatta di altre ugauli alla prima. Mi spiego:
>
>in A1 ho impostato un formattazione condizionale in modo tale che se la
>cella contiene "MO" si tinge lo sfondo di rosa e il testo � rosso, se
>invece contiene "ME" di verde col testo nero etc.
>Vorrei che "tutte le celle di quella riga" (A2-A3-a4 etc) al momento in
>cui digito in A1 MO O ME assumino la stessa formattazione di A1.
Seleziona tutta la riga A e aggiungi una nuova regola di formattazione
condizionale basta su una formula ('Utilizza una formula per determinare
le celle da formattare'). Nel tuo caso la formula sar�:
=$A$1="MO"
--
Tiziano Marmiroli
Microsoft MVP - Office System
http://www.riolab.org
Eccola la...ovviamente io la scrivevo senza virgolette cio� scrivevo
=$a$1=MO sono un po arruginito con excel :-(
Funziona. Se io digito in a1 MO la riga si formatta secondo
formattazione indicata e cos� per ME etc.
Ora come devo fare per applicare la regola ad altre celle.
Esempio:
Ciascuna delle righe tra A1 e A34 deve avere una formattazione tale che
se ad esempio in una qualunque riga tra A1 e A34 digitassi MO o ME o MC
questa si colori secondo formattazione indicata.
Se nella riga A2 digito MO questa si colora di conseguenza; ma
cambierebbe formattazione se digitassi ME o MC.
LO stsso per A3 e via dicendo.
Ciao Scacco.
Come al solito penso di non aver capito.
Tu dici:
> Ciascuna delle righe tra A1 e A34 deve avere una formattazione tale che
> se ad esempio in una qualunque riga tra A1 e A34 digitassi MO o ME o MC
> questa si colori secondo formattazione indicata.
Domanda:
Cosa dovrebbe succedere se, ad esempio, in A1 digiti MO, poi in A10
digiti ME e quindi in A25 digiti MC, ovviamente senza cambiare le
digitazioni precedenti ?
Grazie e saluti.
Eliano
Ciao Tiziano.
Vedo che MS, dopo un certo periodo di funzionamento alla "iolae" che
sembrava felicemente risolto, stasera, dalle 23 circa, non apre per:
Servizio temporaneamente non disponibile.
Scusa se ti disturbo,ma hai notizie in merito ? Grazie.
Saluti
Eliano
L'ho esposta molto male.
Se ogni cella nel range A1:A34 è autonoma, cioè deve avere la sua
propria formattazione condizionale, seleziona con il mouse quel range
ed applica le tre formattazioni condizionali normalmente; ad esempio:
=A1="MO" colore rosso
=A1="ME" colore giallo
=A1="MC" colore verde
Saluti
Eliano
la riga A1-L1(ad esempio) diventa rosa con la scritta rosso;
(se per� sempre in a1 digito ME la riga A1:L1 deve diventare Verde con
scritta nera)
> A10 digiti ME
la riga A10-L10 deve diventare Verde con scritta nera
(Ma se in a10 digito sempre MO la riga a1-L10 deve diventare rosa con
scritte rosse)
e quindi in A25 digiti MC,
se in a25 digito MC la riga a25-L25 diventa gialla con scritta nera.
(Ma se digitassi una qualunque delle opzioni disponibili (ME MO) la
riga assume le formattazioni corrispondenti=
In pratica le righe tra A1:L34 devono essere "pronte" per cambiare
formattazzione a secondo che nella colonna A1:A34 ci scriva MO, ME, MC.
Grazie a te
>
> L'ho esposta molto male.
> Se ogni cella nel range A1:A34 � autonoma, cio� deve avere la sua
> propria formattazione condizionale, seleziona con il mouse quel
> range ed applica le tre formattazioni condizionali normalmente; ad
> esempio: =A1="MO" colore rosso
> =A1="ME" colore giallo
> =A1="MC" colore verde
funziona per A1:a34. il problema � formattare le relative celle tra
B1:L1
A2:L2 etc
"ScaccoMatto" ha scritto:
>
> >
> > Ciao Scacco.
> > Come al solito penso di non aver capito.
> ---
> > Domanda:
> > Cosa dovrebbe succedere se, ad esempio, in A1 digiti MO, poi in
>
> la riga A1-L1(ad esempio) diventa rosa con la scritta rosso;
> (se però sempre in a1 digito ME la riga A1:L1 deve diventare Verde con
> scritta nera)
>
> > A10 digiti ME
> la riga A10-L10 deve diventare Verde con scritta nera
> (Ma se in a10 digito sempre MO la riga a1-L10 deve diventare rosa con
> scritte rosse)
>
> e quindi in A25 digiti MC,
> se in a25 digito MC la riga a25-L25 diventa gialla con scritta nera.
> (Ma se digitassi una qualunque delle opzioni disponibili (ME MO) la
> riga assume le formattazioni corrispondenti=
>
> In pratica le righe tra A1:L34 devono essere "pronte" per cambiare
> formattazzione a secondo che nella colonna A1:A34 ci scriva MO, ME, MC.
>
> Grazie a te
Ciao Scacco.
OK, allora segui le indicazioni di Tiziano (ciao) con, nella formula, i
riferimenti assoluti ($a$1) per ogni riga e dovresti ottenere il risultato
richiesto, a meno che tu non voglia ricorrere al Vba.
Questo sempre che Ivano (ciao), del quale ho visto un paio di interventi,
non abbia una "magica" soluzione con formula che disgraziatamente non è alla
mia portata.
Saluti
Eliano
"ScaccoMatto" ha scritto:
>
> >
> > Ciao Scacco.
> > Come al solito penso di non aver capito.
> ---
> > Domanda:
> > Cosa dovrebbe succedere se, ad esempio, in A1 digiti MO, poi in
>
> la riga A1-L1(ad esempio) diventa rosa con la scritta rosso;
> (se però sempre in a1 digito ME la riga A1:L1 deve diventare Verde con
> scritta nera)
>
> > A10 digiti ME
> la riga A10-L10 deve diventare Verde con scritta nera
> (Ma se in a10 digito sempre MO la riga a1-L10 deve diventare rosa con
> scritte rosse)
>
> e quindi in A25 digiti MC,
> se in a25 digito MC la riga a25-L25 diventa gialla con scritta nera.
> (Ma se digitassi una qualunque delle opzioni disponibili (ME MO) la
> riga assume le formattazioni corrispondenti=
>
> In pratica le righe tra A1:L34 devono essere "pronte" per cambiare
> formattazzione a secondo che nella colonna A1:A34 ci scriva MO, ME, MC.
>
> Grazie a te
Sono un po' allergico ai colori; una possibile soluzione artigianale in Vba
ppotrebbe essere questa, ovviamente con le caratteristiche di formattazione
da modificare come meglio credi.
Nel Modulo del foglio interessato, ad esempio Foglio1, copiaci questa
routine di evento (Change):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim UC As Long, R As Long
If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
Rows(Target.Row).Interior.ColorIndex = xlNone
R = Target.Row
UC = Cells(R, Columns.Count).End(xlToLeft).Column
Set rng = Range(Cells(R, 1), Cells(R, UC))
rng.Interior.ColorIndex = xlNone
If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
Set rng = Nothing ' e comme disse MMauro :-))
End Sub
e facci sapere.
Saluti
Eliano
Sono abbastanza sicura di non aver capito, però provare non costa
niente...
Se quello che vuoi è che per ogni cella in colonna A che contiene "MO"
(ecc...) l'intera riga assuma il formato da te indicato, allora:
Seleziona tutto il tuo range
La formula per la formattazione:
=$A1="MO"
(idem per le altre condizioni)
Ciao, Nur
"Nur" ha scritto:
Gentile Signora, pensavo di avergli risposto in tal senso ma evidentemente
sono stato troppo munifico; di $ gliene ho rifilati 2. :-))
[OK, allora segui le indicazioni di Tiziano (ciao) con, nella formula, i
riferimenti assoluti ($a$1) <----- per ogni riga]
Saluti
Eliano
>> Sono abbastanza sicura di non aver capito, per� provare non costa
>> niente...
Io sono abbastanza sicuro che hai capito...
>> Se quello che vuoi � che per ogni cella in colonna A che contiene "MO"
>> (ecc...) l'intera riga assuma il formato da te indicato, allora:
>> Seleziona tutto il tuo range
>> La formula per la formattazione:
>> =$A1="MO"
>> (idem per le altre condizioni)
>Gentile Signora, pensavo di avergli risposto in tal senso ma evidentemente
>sono stato troppo munifico; di $ gliene ho rifilati 2. :-))
>[OK, allora segui le indicazioni di Tiziano (ciao) con, nella formula, i
>riferimenti assoluti ($a$1) <----- per ogni riga]
Eliano, non capisco, continui a abbondare con gli $...
"Tiziano Marmiroli" ha scritto:
> Il Sun, 12 Jul 2009 17:22:02 -0700, eliano ha scritto:
>
> >> Sono abbastanza sicura di non aver capito, però provare non costa
> >> niente...
>
> Io sono abbastanza sicuro che hai capito...
>
> >> Se quello che vuoi è che per ogni cella in colonna A che contiene "MO"
> >> (ecc...) l'intera riga assuma il formato da te indicato, allora:
> >> Seleziona tutto il tuo range
> >> La formula per la formattazione:
> >> =$A1="MO"
> >> (idem per le altre condizioni)
>
> >Gentile Signora, pensavo di avergli risposto in tal senso ma evidentemente
> >sono stato troppo munifico; di $ gliene ho rifilati 2. :-))
> >[OK, allora segui le indicazioni di Tiziano (ciao) con, nella formula, i
> >riferimenti assoluti ($a$1) <----- per ogni riga]
>
> Eliano, non capisco, continui a abbondare con gli $...
E' un propedeutico per il sei al Superenalotto.:-))
Ho solo riportato una parte del mio post con il quale "credevo" di aver dato
la giusta soluzione ($a1) scrivendo invece $a$1; quando ho letto la risposta
di nur (ciao) le stavo rispondendo che era identica alla mia ma,
fortunatamente, sono andato a controllare prima di inviare.
Non è mai buona cosa essere mandati a quel paese da gentili signore.:-D)
Eliano
Grazie per l'invito non (ancora) espresso, e saluti.
Figurati Eliano, non mi sognerei nemmeno di pensarlo!!
Ciao, Nur
non � che io straveda.
Il foglio deve essere unico ma usato da tre persone diverse che non si
possono incontrare ne si possono parlare (non � un gioco te lo
assicuro). Ma deve essere unico perch� unico � il coordinatore di tutto
l'ambaraban esi deve avere la situazione in un colpo d'ochio
Ci saranno delle formule che calcoleranno le spese di diverse persone
appartenenti a tre gruppi diversi. I colori identificano i diversi
gruppi. Le tre persone incaricate riceveranno i soldi (veri) dalle
varie persone.
Spero i colori aumentino la visibilit�
> artigianale in Vba ppotrebbe essere questa, ovviamente con le
> caratteristiche di formattazione da modificare come meglio credi.
> Nel Modulo del foglio interessato, ad esempio Foglio1, copiaci
> questa routine di evento (Change):
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Dim rng As Range
> Dim UC As Long, R As Long
> If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
> Rows(Target.Row).Interior.ColorIndex = xlNone
> R = Target.Row
> UC = Cells(R, Columns.Count).End(xlToLeft).Column
> Set rng = Range(Cells(R, 1), Cells(R, UC))
> rng.Interior.ColorIndex = xlNone
> If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
> If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
> If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
> Set rng = Nothing ' e comme disse MMauro :-))
> End Sub
>
> e facci sapere.
non mancher�
urcaaa ma sono un po pi� di 34....
"ScaccoMatto" ha scritto:
> [--]
> >
> > [OK, allora segui le indicazioni di Tiziano (ciao) con, nella
> > formula, i riferimenti assoluti ($a$1) <----- per ogni riga]
>
> urcaaa ma sono un po più di 34....
> --
Ciao Scacco.
Ho già spiegato il lapsus mentale nel quale sono incorso e con la soluzione
di nur amplii la selezione fin dove è necessario ed in un colpo solo risolvi.
Tuttavia, se l'ambaradan fosse dinamico, consiglierei la soluzione Vba,
gestendo opportunamente il range da trattare.
Saluti
Eliano
"ScaccoMatto" ha scritto:
> [--]
> >> Grazie a te
> >
> > Sono un po' allergico ai colori; una possibile soluzione
>
> non è che io straveda.
> Il foglio deve essere unico ma usato da tre persone diverse che non si
> possono incontrare ne si possono parlare (non è un gioco te lo
> assicuro). Ma deve essere unico perchè unico è il coordinatore di tutto
> l'ambaraban esi deve avere la situazione in un colpo d'ochio
> Ci saranno delle formule che calcoleranno le spese di diverse persone
> appartenenti a tre gruppi diversi. I colori identificano i diversi
> gruppi. Le tre persone incaricate riceveranno i soldi (veri) dalle
> varie persone.
> Spero i colori aumentino la visibilità
Opinione personale:
sicuramente i colori aumentano la visibilità...dei colori.:-))
Che si tratti di operazioni omogenee o di operazioni consequenziali fra i
tre gruppi, forse al gestore e/o controllore dell'accrocco infernale, oltre
al dettaglio colorato, potrebbe interessare o un confronto diretto fra i vari
dettagli delle operazioni o un confronto diretto fra i valori globali.
Ripeto, opinione personale.
Saluti
Eliano
[--]
> Sono un po' allergico ai colori; una possibile soluzione
> artigianale in Vba ppotrebbe essere questa, ovviamente con le
> caratteristiche di formattazione da modificare come meglio credi.
> Nel Modulo del foglio interessato, ad esempio Foglio1, copiaci
> questa routine di evento (Change):
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Dim rng As Range
> Dim UC As Long, R As Long
> If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
> Rows(Target.Row).Interior.ColorIndex = xlNone
> R = Target.Row
> UC = Cells(R, Columns.Count).End(xlToLeft).Column
> Set rng = Range(Cells(R, 1), Cells(R, UC))
> rng.Interior.ColorIndex = xlNone
> If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
> If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
> If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
> Set rng = Nothing ' e comme disse MMauro :-))
> End Sub
>
Funziona solo in parte.
Infatti colora solo la cella in cui digito MO, ME etc vale a dire A1 A2
o A3 e non la riga A1:L1.
Questa soluzione mi affascina di pi� come procedo alla correzione
ma che dici?
Hai capito benissimo
> allora: Seleziona tutto il tuo range
> La formula per la formattazione:
> =$A1="MO"
> (idem per le altre condizioni)
Funziona.
Ma � talmente semplice che ha poco fascino ;-)
Grazie mille
"ScaccoMatto" ha scritto:
> [--]
> > Opinione personale:
> > sicuramente i colori aumentano la visibilità ...dei colori.:-))
> >
> magari anche la "leggibilità" ;-) cerco di raggiungere un
> risultato come quelle dei moduli in continuo
> > Che si tratti di operazioni omogenee o di operazioni
> > consequenziali fra i tre gruppi, forse al gestore e/o controllore
> > dell'accrocco infernale, oltre al dettaglio colorato, potrebbe
> > interessare o un confronto diretto fra i vari dettagli delle
> > operazioni o un confronto diretto fra i valori globali.
> >
> > Ripeto, opinione personale.
> condivisibile.
> Cosa suggerisci di lettura immediata da inserire in un A4?
>
LOL
Praticamente impossibile dare una risposta coerente non conoscendo le
caratteristiche dell'ambaradan; la sfera di cristallo è in manutenzione.:-))
Azzardiamo, con l'A4 in orizzontale:
Ovviamente i valori globali dei tre gruppi.
Se trattasi di ricavi, con in contropartita i costi relativi.
Se trattasi di operazioni omogenee, riepilogo costi e ricavi per operazione.
Se i tempi sono variabili, idem con discriminante tempi che potrebbe
modificare il "valore" del risultato.
Se le risorse sono diverse per ogni gruppo, parametri "risorsa" per
operazione/gruppo che potrebbero modificare il "valore" del risultato.
Un mucchio di fogli da fornire al gestore con un post-it con su scritto:
Fattelo da te!:-))
Ripeto scacco, vado a braccio per mancanza di conoscenza del problema, ma
trattandosi di Azienda e di grana che circola, la deformazione professionale
è più che evidente.:-))
Facci comunque sapere.
Saluti
Eliano
"ScaccoMatto" ha scritto:
> [--]
> > Opinione personale:
> > sicuramente i colori aumentano la visibilità ...dei colori.:-))
> >
> magari anche la "leggibilità" ;-) cerco di raggiungere un
> risultato come quelle dei moduli in continuo
Ciao Scacco.
Dimenticavo: fra 20 minuti arrocco e vado a nanna.
Eliano
"ScaccoMatto" ha scritto:
> Il /13 lug 2009/, *=?Utf-8?B?ZWxpYW5v?=* ha scritto:
>
> [--]
> > Sono un po' allergico ai colori; una possibile soluzione
> > artigianale in Vba ppotrebbe essere questa, ovviamente con le
> > caratteristiche di formattazione da modificare come meglio credi.
> > Nel Modulo del foglio interessato, ad esempio Foglio1, copiaci
> > questa routine di evento (Change):
> >
> > Private Sub Worksheet_Change(ByVal Target As Range)
> > Dim rng As Range
> > Dim UC As Long, R As Long
> > If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
> > Rows(Target.Row).Interior.ColorIndex = xlNone
> > R = Target.Row
> > UC = Cells(R, Columns.Count).End(xlToLeft).Column
> > Set rng = Range(Cells(R, 1), Cells(R, UC))
> > rng.Interior.ColorIndex = xlNone
> > If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
> > If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
> > If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
> > Set rng = Nothing ' e comme disse MMauro :-))
> > End Sub
> >
> Funziona solo in parte.
> Infatti colora solo la cella in cui digito MO, ME etc vale a dire A1 A2
> o A3 e non la riga A1:L1.
> Questa soluzione mi affascina di più come procedo alla correzione
>
Ciao Scacco.
Non avevo visto il tuo post; l'ho visto da Google prima di staccare.
Comunque a me (XL2003) funziona ed il foglio di prova è disponibile.
Probabilmente, dopo aver copiato la routine di evento nel modulo del foglio,
ad esempio Modulo1, non hai salvato e chiuso il file; alla riapertura
dovrebbe funzionare.
Se la cosa ti affascina, prova e facci sapere.
Buona notte,
Eliano
> Probabilmente, dopo aver copiato la routine di evento nel modulo del foglio,
> ad esempio Modulo1, non hai salvato e chiuso il file; alla riapertura
> dovrebbe funzionare.
VOLEVA ESSERE:
> Probabilmente, dopo aver copiato la routine di evento nel modulo del foglio,
> ad esempio Foglio1, non hai salvato e chiuso il file; alla riapertura
> dovrebbe funzionare.
Ma questo più che un Lapsus mentale è un lapis ! Cenere in capo.:-((
Probabilmente, dopo aver copiato la routine di evento
> nel modulo del foglio, ad esempio Modulo1,
l'ho copiato dovunque :-)... niente
>>non hai salvato e
> chiuso il file; alla riapertura dovrebbe funzionare.
??????
> Se la cosa ti affascina, prova e facci sapere.
Certo
> Buona notte,
"ScaccoMatto" ha scritto:
> [--]
> > Ciao Scacco.
> > Non avevo visto il tuo post; l'ho visto da Google prima di
> > staccare. Comunque a me (XL2003) funziona ed il foglio di prova è
> > disponibile.
> A me in Excel 2007 funziona sempre come descritto prima
>
> Probabilmente, dopo aver copiato la routine di evento
> > nel modulo del foglio, ad esempio Modulo1,
> l'ho copiato dovunque :-)... niente
>
> >>non hai salvato e
> > chiuso il file; alla riapertura dovrebbe funzionare.
> ??????
> > Se la cosa ti affascina, prova e facci sapere.
>
> Certo
> > Buona notte,
>
Ciao Scacco.
Con XL2007 che, dopo alcune modeste prove iniziali, ho cancellato dal mio
PC, non so se la macro di evento funziona, comunque ieri sera,prima di
staccare, ho messo sul mio disco remoto il foglio di prova, per cui se ti
interessa scaricalo.
http://mio.discoremoto.alice.it/falinieliano nome del file: xScaccoMatto.xls
Saluti
Eliano
Ciao Scacco, ciao Eliano.
Non � che, per caso, nel tuo foglio di prova non hai valori nelle altre
colonne?
La routine di Eliano 'colora' la riga fino all'ultima colonna contenente
dati.
Se per provare, tu hai solo 'MO' in A1, si colora solo A1, non A1:L1.
Ciao, Nur
Non riesco pi� a scaricare il file.
Ieri il PC era in manutenzione ;-)
Ora ho potuto constatare che cos� funziona.
Il fatto � che non a caso MO o ME o MC sono su colonna A; sono i primi
dati che inserisco e perci� quando digito MO etc subito la riga deve
colorarsi dovutamente.
Ho provato ma � molto scomodo digitare prima i dati e poi MO o MC
Grazie
Scaricato.
Sto scaricandoti l'intero disco :-)
"ScaccoMatto" ha scritto:
> [--]> Ciao Scacco.
> > Con XL2007 che, dopo alcune modeste prove iniziali, ho cancellato
> > dal mio PC, non so se la macro di evento funziona, comunque ieri
> > sera,prima di staccare, ho messo sul mio disco remoto il foglio di
> > prova, per cui se ti interessa scaricalo.
> > http://mio.discoremoto.alice.it/falinieliano nome del file:
> > xScaccoMatto.xls Saluti
> > Eliano
>
> Scaricato.
> Sto scaricandoti l'intero disco :-)
>
Fai pure, ma considera che può contenere anche files .xls non perfettamente
funzionanti che sono serviti per discussioni personali (della serie: forse
sarebbe meglio NON fare così) e che non ho mai cancellato.
Comunque il tuo file funziona, solo che non posso prima compilare il
resto della riga e poi compilare la cella in colonna A.
Nessuna soluzione in VBA al problema.
"ScaccoMatto" ha scritto:
> [--]
> > Ciao Scacco, ciao Eliano.
> > Non è che, per caso, nel tuo foglio di prova non hai valori nelle
> > altre colonne?
> > La routine di Eliano 'colora' la riga fino all'ultima colonna
> > contenente dati.
> > Se per provare, tu hai solo 'MO' in A1, si colora solo A1, non
> > A1:L1.
>
> Ora ho potuto constatare che così funziona.
> Il fatto è che non a caso MO o ME o MC sono su colonna A; sono i primi
> dati che inserisco e perciò quando digito MO etc subito la riga deve
> colorarsi dovutamente.
> Ho provato ma è molto scomodo digitare prima i dati e poi MO o MC
> Grazie
Ciao Scacco.
La routine è una routine di evento Change e l'ipotesi era di assegnare ad
una riga contenente valori un discriminatore in colonna A, dopo la
digitazione dei diversi valori.
Prova a modificarla assegnando direttamente alla riga, da colorare in
funzione del valore in A1, il range A1:L1; oppure sposta il valore da A1 in
L1, aumentando, per la gioia maxima del controllore, la visibilità del
percettore di riferimento.:-))
Eliano
"ScaccoMatto" ha scritto:
> [---]>> Scaricato.
> >> Sto scaricandoti l'intero disco :-)
> >>
> >
> > Fai pure, ma considera che può contenere anche files .xls non
> > perfettamente funzionanti che sono serviti per discussioni
> > personali (della serie: forse sarebbe meglio NON fare così) e che
> > non ho mai cancellato.
> >
>
> Comunque il tuo file funziona, solo che non posso prima compilare il
> resto della riga e poi compilare la cella in colonna A.
> Nessuna soluzione in VBA al problema.
>
Ciao Scacco.
Affermare che non esista almeno una soluzione al problema in Vba è perlomeno
improprio; quasi certamente non esistono in Excel soluzioni che sono anche
banali in Vba.
Ti avevo consigliato nell'altro post di modificare "banalmente" la mia
macro; se proprio ti interessa faccelo sapere.
Eliano
"eliano" ha scritto:
Anzi, visto che la modifica era veramente banale e che Virgilio ha
modificato la parte grafica delle mail, visto che conosci la strada,
riscaricati il file xScaccoMatto.xls con le due versioni della routine di
evento, pregandoti di voler verificare la "banalità". :-D)
Ho dimenticato il segno di domanda.
Non mi sarei mai sognato neanche lontanamente o sotto l'effetto di
potenti psicotici, di "affermare" quanto sopra.
Nel frattempo io ho provato varie modifiche al codice ma o non
funzionano o davano errore
nessuna cosa � veramente difficile per chi la sa.
Oltre al fatto che per chi non mastica VBA giornalmente la modifica non
� banale.
Questo � il codice iniziale:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim UC As Long, R As Long
If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
Rows(Target.Row).Interior.ColorIndex = xlNone
R = Target.Row
UC = Cells(R, Columns.Count).End(xlToLeft).Column
Set rng = Range(Cells(R, 1), Cells(R, UC))
rng.Interior.ColorIndex = xlNone
If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
Set rng = Nothing ' e comme disse MMauro :-))
End Sub
Questo quello suggerito (da quanto ho potuto capire)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim UC As Long, R As Long
If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
R = Target.Row
UC = Cells(R, Columns.Count).End(xlToLeft).Column
Set rng = Range(Cells(R, 1), Cells(R, 12))
rng.Interior.ColorIndex = xlNone
If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
Set rng = Nothing ' e commo disse MMauro :-))
End Sub
Rige del "contendere" (secondo mia personale opinione)
Set rng = Range(Cells(R, 1), Cells(R, 12))
R = Target.Row
gi� se sapessi il significato sarebbe tanto, allora si avrei potuto
tentare la modifica.
Io modificavo l'unica cosa che per me significava un riferimento.
"If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub"
"If Intersect(Target, Range("A1:L34")) Is Nothing Then Exit Sub"
Ma mi dava errori che non si capisce..
Non dirmi che la modifica era troooopppo banale ;-)
"ScaccoMatto" ha scritto:
> [--]
> >
> > Anzi, visto che la modifica era veramente banale e che Virgilio ha
> > modificato la parte grafica delle mail, visto che conosci la
> > strada, riscaricati il file xScaccoMatto.xls con le due versioni
> > della routine di evento, pregandoti di voler verificare la
> > "banalità ". :-D)
>
> nessuna cosa è veramente difficile per chi la sa.
>
> Oltre al fatto che per chi non mastica VBA giornalmente la modifica non
> è banale.
>
Ciao Scacco.
E' dal 2005 che pascolo su questo NG ed ho espresso più volte una mia
opinione in merito all'utilizzo del Vba in Excel.
Si tratta di una mia regola personale alla quale mi attengo rigidamente e
cioè:
Non utilizzare mai Udf o Macro che non sono in grado di capire e quindi
modificare per adattarle alle mie necessità; per me la cosa non ammette
deroghe!
Ti riporto le due routine di evento (Change) utilizzate nel file a te
dedicato:
'------------------------ nel Modulo del Foglio1
Private Sub Worksheet_Change(ByVal Target As Range) 'versione 1
Dim rng As Range
Dim UC As Long, R As Long
'riferimenti da variare
If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
R = Target.Row
UC = Cells(R, Columns.Count).End(xlToLeft).Column
Set rng = Range(Cells(R, 1), Cells(R, UC))
rng.Interior.ColorIndex = xlNone
If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
Set rng = Nothing ' e commo disse MMauro :-))
End Sub
'------------------------------------------------
'-------------------------- Nel modulo del Foglio2
Private Sub Worksheet_Change(ByVal Target As Range) 'versione 2
Dim rng As Range
Dim UC As Long, R As Long
'riferimenti da variare
If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub
R = Target.Row
'-------------------------------------------
'questa è l'unica modifica :-))
'UC = Cells(R, Columns.Count).End(xlToLeft).Column
'Set rng = Range(Cells(R, 1), Cells(R, UC))
Set rng = Range(Cells(R, 1), Cells(R, 12))
'-------------------------------------------
rng.Interior.ColorIndex = xlNone
If UCase(Target.Value) = "MO" Then rng.Interior.ColorIndex = 3
If UCase(Target.Value) = "ME" Then rng.Interior.ColorIndex = 6
If UCase(Target.Value) = "MC" Then rng.Interior.ColorIndex = 4
Set rng = Nothing ' e commo disse MMauro :-))
End Sub
'---------------------------------------------------------------------
Nella seconda sono specificate chiaramente le modifiche effettuate rispetto
alla prima, cioè le righe del contendere.
Non sarebbe male se, aiutandoti con la guida in linea, tentassi di capire il
funzionamento sia della prima che della seconda, in particolare relativamente
a quanto scritto:
.............
Io modificavo l'unica cosa che per me significava un riferimento.
"If Intersect(Target, Range("A1:A34")) Is Nothing Then Exit Sub"
"If Intersect(Target, Range("A1:L34")) Is Nothing Then Exit Sub"
Ma mi dava errori che non si capisce..
----------
Si sta parlando di routine di evento (Change) e le celle che ci interessano
sono quelle della colonna A, da A1 a A34; l'istruzione (intersect) serve per
controllare se il change avviene su una di quelle celle, in caso contrario la
routine interrompe il suo funzionamento (Exit Sub).
Se tu gli dici di controllare le variazioni sul range A1:L34, la routine,
scatenata dalla variazione di una qualsiasi cella in "quel" range, dovrebbe
dare veramente i numeri.:-))
Tornando alla variazione, avevo scritto:
'-------------------------------------------
'questa è l'unica modifica :-))
'UC = Cells(R, Columns.Count).End(xlToLeft).Column
'Set rng = Range(Cells(R, 1), Cells(R, UC))
Set rng = Range(Cells(R, 1), Cells(R, 12))
'-------------------------------------------
Nella prima routine era definito il range da trattare come: tutte le celle
della riga nella quale c'era stata una variazione nel contenuto della cella
nella colonna A;
conoscendo il Target del Change, cioè la cella di controllo dell'evento
Change, potevo ottenere la riga relativa:
R = Target.Row
e mi potevo calcolare l'ultima colonna di quella riga contenente valori:
UC = Cells(R, Columns.Count).End(xlToLeft).Column
riuscendo così ad ottenere il range da colorare:
Set rng = Range(Cells(R, 1), Cells(R, UC))
Nella seconda, visti i problemi rilevati, ho definito direttamente il range
interessato:
Set rng = Range(Cells(R, 1), Cells(R, 12))
dove 12 è la colonna L
Sono convinto che se avessi cercato di capirla consultando la guida in
linea, probabilmente sarebbe sembrata banale anche a te.
Saluti
Eliano
Allora per farlo andare in estasi ,dimmi cosa devo scrivere per
indicare il testo bianco su fondo rosso.
io son rimasto a
If UCase(Target.Value) = "MO" Then rng.Characters.Text.ColorIndex = 2
messagio qualificatore non valido
"ScaccoMatto" ha scritto:
> [--]
> > Prova a modificarla assegnando direttamente alla riga, da colorare
> > in funzione del valore in A1, il range A1:L1; oppure sposta il
> > valore da A1 in L1, aumentando, per la gioia maxima del
> > controllore, la visibilità del percettore di riferimento.:-))
>
>
> Allora per farlo andare in estasi ,dimmi cosa devo scrivere per
> indicare il testo bianco su fondo rosso.
> io son rimasto a
> If UCase(Target.Value) = "MO" Then rng.Characters.Text.ColorIndex = 2
>
> messagio qualificatore non valido
L'istruzione dovrebbe essere:
If UCase(Target.Value) = "MO" Then rng.Font.ColorIndex = 2
e se l'omo ti va in estasi, assicurati che abbia indossato il pannolone
regolamentare da "controllori".:-))
A parte gli scherzi, quando hai questo tipo di problemi, ti conviene aprire
il registratore di macro, formattare la cella come desideri, chiudere il
registratore ed andare a vedere le istruzioni registrate sul Modulo1.
Per il pannolone rivolgersi alle locali organizzzazzzioni di categoria. :-))
Ciao Scacco,
Eliano
Gi�..ci ho pensato ma in excel 2007 non sapevo come registrarla perch�
non era attiva la scheda sviluppo.
Ma � mia impressione o il codice che scaturisce da una registrazione
macro � diverso da un codice che esegue la stessa istruzione ma che
compili a manina?
Per il pannolone rivolgersi
> alle locali organizzzazzzioni di categoria. :-)) Ciao Scacco,
Anche a te piace ZZORRO :))
"ScaccoMatto" ha scritto:
> Il /17 lug 2009/, *=?Utf-8?B?ZWxpYW5v?=* ha scritto:
>
> >
> >
> > "ScaccoMatto" ha scritto:
> >
> >> [--]
> >> > Prova a modificarla assegnando direttamente alla riga, da
> >> > colorare in funzione del valore in A1, il range A1:L1; oppure
> >> > sposta il valore da A1 in L1, aumentando, per la gioia maxima
> >> > del controllore, la visibilità del percettore di
> >> > riferimento.:-))
> >>
> >>
> >> Allora per farlo andare in estasi ,dimmi cosa devo scrivere per
> >> indicare il testo bianco su fondo rosso.
> >> io son rimasto a
> >> If UCase(Target.Value) = "MO" Then rng.Characters.Text.ColorIndex
> >> = 2
> >>
> >> messagio qualificatore non valido
> >
> > L'istruzione dovrebbe essere:
> > If UCase(Target.Value) = "MO" Then rng.Font.ColorIndex = 2
> > e se l'omo ti va in estasi, assicurati che abbia indossato il
> > pannolone regolamentare da "controllori".:-))
> > A parte gli scherzi, quando hai questo tipo di problemi, ti
> > conviene aprire il registratore di macro, formattare la cella come
> > desideri, chiudere il registratore ed andare a vedere le
> > istruzioni registrate sul Modulo1.
>
> Già..ci ho pensato ma in excel 2007 non sapevo come registrarla perchè
> non era attiva la scheda sviluppo.
> Ma è mia impressione o il codice che scaturisce da una registrazione
> macro è diverso da un codice che esegue la stessa istruzione ma che
> compili a manina?
>
> Per il pannolone rivolgersi
> > alle locali organizzzazzzioni di categoria. :-)) Ciao Scacco,
>
> Anche a te piace ZZORRO :))
>
Certo, ma con 3 "Z" e 4 "R". :-))
Per quanto riguarda il Registratore di Macro può essere utile per la
sintassi delle istruzioni, o per darti un'idea "didattica" su come risolvere
un problema, ma ovviamente ha i suoi limiti perchè in Vba non esiste un solo
"modo" per ottenere un certo "risultato".
Eliano
"ScaccoMatto" ha scritto:
> [--]
> >
> > Certo, ma con 3 "Z" e 4 "R". :-))
> > Per quanto riguarda il Registratore di Macro può essere utile per
> > la sintassi delle istruzioni, o per darti un'idea "didattica" su
> > come risolvere un problema, ma ovviamente ha i suoi limiti perchè
> > in Vba non esiste un solo "modo" per ottenere un certo
> > "risultato".
> Ho capito.
> Un po come comprarsi un perfabricato o costrirsi un villino
> nelle scuole insegnano ancora il VBA 6.
> Nulla in contrario ma, perchè non linguaggi più attuali tipo .net?
> Servono a qualcosa i manuali VBA che si stampano?
>
Probabilmente intendevi dire che insegnano ancora il VB6.
Linguaggi più attuali ? Forse sono attuali oggi, ma domani rischiano di
essere obsoleti; fermo restando che in qualsiasi genere di software la cosa
più importante è una analisi logica, corretta e coerente del problema, da
attuare con un qualsiasi linguaggio di programmazione.
Non so se i manuali VBA siano utili o meno; ritengo di si anche se
personalmente non ne ho mai posseduto uno.
Se(se) parliamo di Excel e/o di Office,
il vb rimane *il linguaggio*.
Con Excel(e Office) non ha senso costruire
villini e palazzi. Sono gi� villini o palazzi,
il vb serve per *domotizzarli*.
> Nulla in contrario ma, perch� non linguaggi pi� attuali tipo .net?
>
Bella domanda. E C#, Java, PHP, ecc.?
E perch� lun e non l'altro?
> Servono a qualcosa i manuali VBA che si stampano?
>
A me s�. Come quelle migliaia e migliaia di pagine
che sull'argomento si pubblicano in Internet.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
"Mauro Gamberini" ha scritto:
> > Servono a qualcosa i manuali VBA che si stampano?
> >
>
> A me sì. Come quelle migliaia e migliaia di pagine
> che sull'argomento si pubblicano in Internet.
>
Fratello, se per "manuali" si intende le pagine che troviamo in Internet,
allora ho detto l'ennesima cacchiata: parafrasando una nota pubblicità, di
quelle ne ho da vendere, e non mi chiamo Margie.:-))
Eliano