| | Post: 66 | Registrato il: 03/05/2016
| Città: MILANO | Età: 50 | Utente Junior | Excel 2011 | | OFFLINE |
|
13/02/2018 11:20 | |
ciao ciao
In colonna “H” è presente un testo che si dovrebbe allineare al variare dei valori presenti sulla stessa riga contenuti nei range E8:E50 e K8:K50
Esempio:
La cella K10 contiene un valore superiore a 0, il testo presente nella colonna “H” dovrebbe allinearsi a destra.
La cella E21 contiene un valore superiore a 0, il testo presente nella colonna “H” dovrebbe allinearsi a sinistra.
Le celle E29 e K29 contengono un valore superiore a 0, il testo presente nella colonna “H” dovrebbe allinearsi al centro.
I valori contenuti nei due range ( “E e K”) saranno restituiti da formule e con ciò dovrebbe aggiornarsi in automatico ogni qualvolta un valore cambia
grazie grazie
un saluto
Simone [Modificato da melaverde74 13/02/2018 11:21] |
|
| | Post: 2.673 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
13/02/2018 17:30 | |
Potresti provare con questo Codice VBA:
Option Explicit
Sub Test()
Application.ScreenUpdating = False
Dim URc As Long, x As Long
URc = Range("H" & Rows.Count).End(xlUp).Row
Range(Cells(8, 8), Cells(URc, 8)).HorizontalAlignment = xlCenter
For x = 8 To URc
If Cells(x, 5) <> "" Or Cells(x, 11) <> "" Then
If Cells(x, 5) <> "" Then Cells(x, 8).HorizontalAlignment = xlLeft
If Cells(x, 11) <> "" Then Cells(x, 8).HorizontalAlignment = xlRight
If Cells(x, 5) <> "" And Cells(x, 11) <> "" Then Cells(x, 8).HorizontalAlignment = xlCenter
End If
Next x
Application.ScreenUpdating = True
End Sub
ma, questa volta, non rispondere:
ho quasi risolto ....1000 grazie per l'aiuto
come in :
http://www.freeforumzone.com/d/11282592/orari-a-tendina-dinamici/discussione.aspx
Piuttosto, rendici edotti della tua soluzione.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 654 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Senior | Excel 2016-32bit Win11 | | OFFLINE |
|
13/02/2018 17:48 | |
Un saluto a tutti.
Arrivo tardi ma ormai ho dedicato un po' di tempo così pubblico comunque la mia versione di macro che potrebbe bastare così (da mettere in un modulo vba, basta anche nel modulo del foglio interessato):
Option Explicit
Sub allinea()
Dim x As Integer
For x = 8 To 50
If Range("E" & x) > 0 And Range("K" & x) > 0 Then
Range("H" & x).HorizontalAlignment = xlCenter
ElseIf Range("E" & x) > 0 Then Range("H" & x).HorizontalAlignment = xlLeft
ElseIf Range("K" & x) > 0 Then Range("H" & x).HorizontalAlignment = xlRight
End If
Next x
End Sub
[Modificato da rollis13 13/02/2018 17:50]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 66 | Registrato il: 03/05/2016
| Città: MILANO | Età: 50 | Utente Junior | Excel 2011 | | OFFLINE |
|
13/02/2018 20:35 | |
Innanzitutto mi scuso per la “ codarda “ risposta data nel post evidenziato da Giuseppe
Il fatto é che io la soluzione non l’ho mai trovata
La verità é che avevo le idee poco chiare di quello che volevo realizzare e visto il lavoro che aveva già fatto Giuseppe ero imbarazzato a dire che avevo abbandonato il progetto
Prometto che la prossima volta sarò più sincero comunque ringrazio di avermi ririsposto
Per quello che riguarda la presente macro ringrazio entrambi l’ho provata ma riesco a farla funzionare solo se digito il valore direttamente in colonna mentre se il valore è restituito da una formula non reagisce.
a voi funziona?
Grazie ancora
Un saluto
Simone
|
| | Post: 2.676 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
13/02/2018 21:38 | |
Buona sera, melaverde74; per il precedente post non c'è alcun problema, quello che volevo semplicemente dire è che le soluzioni andrebbero condivise in Forum. Detto ciò, direi che i Codici VBA dovrebbero funzionare anche con Formule; allego il File con il quale ho condotto i miei test. A disposizione. Buona serata. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 655 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Senior | Excel 2016-32bit Win11 | | OFFLINE |
|
13/02/2018 23:24 | |
Nella mia manca solo il riposizionamento al centro in quei casi in cui, una volta spostato il testo a destra o sinistra, poi a seguito di ulteriori calcoli ci si trova nella condizione di ripristinare la posizione centrale con entrambe le celle valori vuoti o zero.
Basta inserire questa riga di codice subito dopo quella con il Dim:
Range("H8:H50").HorizontalAlignment = xlCenter [Modificato da rollis13 13/02/2018 23:31]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 67 | Registrato il: 03/05/2016
| Città: MILANO | Età: 50 | Utente Junior | Excel 2011 | | OFFLINE |
|
14/02/2018 14:40 | |
Grazie Giuseppe per il tuo lavoro e il file.
Il fatto è che le formule non sono contenute in colonna “H” bensi nelle colonne gialle “E e K”
Ho fatto un file con un semplice esempio per far capire quello che vorrei ottenere.
La macro dovrebbe attivarsi in automatico ogni qualvolta che nelle colonne gialle E e K subiscono un cambiamento di valore dato dal risultato della formula il cui valore è dato dalla selezione in colonne “C e M”.
Ho provato ad inserire queste due righe ma non funziona lo stesso
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E:E,K:K")) Is Nothing Then Test
End Sub
Sapresti dirmi se c’è una soluzione per questo problema?
Ho provato a fare delle prove anche con la macro di rollis ( che ringrazio ) ma non sono riuscito a trovare una soluzione
grazie
Simone |
| | Post: 2.679 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
14/02/2018 15:33 | |
Buona giornata, Simone; mi era sorto il dubbio che le Formule fossero in Colonna "E" e "K". Il File in allegato prevedeva esattamente questo tipo di struttura; non mi sono preoccupato più di tanto perchè ho visto che la Procedura funzionava comunque. L'unica differenza tra il tuo File proposto in Risposta #7 e il mio sta proprio nella Formula utilizzata. Nel tuo File, in Cella C8 utilizzi la Formula: =SE(C8=1;$A$1;SE(C8=2;$A$2;SE(C8=3;$A$3;SE(C8=4;$A$4;SE(C8=5;$A$5;" "))))) mentre nel mio File ho utilizzato la Formula: =SE($C8="";"";CERCA.VERT($C8;$A$2:$B$50;1;0)) Analogamente per le Formule in Colonna "K" Ora, vedi tu se ritieni di dover mantenere la struttura della tua Formula dovresti semplicemente togliere lo spazio compreso tra " ". Voglio dire la tua Formula diventerebbe: =SE(C8=1;$A$1;SE(C8=2;$A$2;SE(C8=3;$A$3;SE(C8=4;$A$4;SE(C8=5;$A$5;""))))) A disposizione. Buona serata. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 68 | Registrato il: 03/05/2016
| Città: MILANO | Età: 50 | Utente Junior | Excel 2011 | | OFFLINE |
|
14/02/2018 16:21 | |
Grazie mille Giuseppe.
Sì certo, la tua formula andrebbe anche bene ma mi allinea comunque solo, se dopo aver inserito il valore in colonna C o L, schiaccio sul pulsante Test e non in automatico.
saluti Simone |
| | Post: 2.680 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
14/02/2018 18:11 | |
Buona sera, Simone; per avere l'allineamento automatico dovresti dirmi quando vuoi che il Codice intervenga: - dopo linserimento di un Valore in Colonna "C"? - dopo linserimento di un Valore in Colonna "M"? o quando? A disposizione. Buona serata. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 2.681 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
14/02/2018 20:57 | |
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 69 | Registrato il: 03/05/2016
| Città: MILANO | Età: 50 | Utente Junior | Excel 2011 | | OFFLINE |
|
15/02/2018 19:16 | |
GRAZIE GIUSEPPE ...ORA SI ATTIVA COME DESIDERATO
saluti
Simone |
|
|