Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Problema macro excel con cella che varia tramite formula

Ultimo Aggiornamento: 15/10/2015 14:34
13/10/2015 21:50

Salve a tutti,
è da due giorni che provo a fare una macro per un file excel, aiutandomi con internet e guardando qualche discussione qui sul forum, ma non riesco a risolvere il mio problema (premetto che non sono molto bravo con VB).

Ho già creato una macro per fare in modo che se io, per esempio nella casella A1 scrivo 1, mi compare una figura su excel corrispondente a quel numero; se tolgo 1 e scrivo 2, compare la figura 2. Fin qui tutto bene, funziona tutto, il problema sorge quando io nella casella A1 vado a mettere una formula; al primo tentativo va, cioè la formula mi da risultato 1 e compare la figura 1, ma se vado a cambiare dati e di conseguenza il risultato nella formula fa 2, rimane sempre la figura 1, la figura 2 non compare.
Quindi in poche parole, se io cambio manualmente i numeri non mi da problemi, e le immagini cambiano, se invece, faccio cambiare i numeri tramite una formula, le immagini non cambiano.

Spero sappiate aiutarmi. [SM=g27811]

Luke
Post: 1.104
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
13/10/2015 22:06

Ciao Luke

Se la macro che hai fatto è su un Worksheet_Change la variazione del risultato di una formula non viene intercettata come una variazione "fisica" del foglio di lavoro e pertanto il codice non viene eseguito.

Quando si usa Worksheet_Change occorre sempre fare riferimento a celle/intervalli ove si verifica un cambiamento "fisico" del loro valore.

Detto questo ti consiglio di allegare il tuo file e vediamo di cosa si tratta.

Alfredo
13/10/2015 22:22

Re:
alfrimpa, 13/10/2015 22:06:

Ciao Luke

Se la macro che hai fatto è su un Worksheet_Change la variazione del risultato di una formula non viene intercettata come una variazione "fisica" del foglio di lavoro e pertanto il codice non viene eseguito.

Quando si usa Worksheet_Change occorre sempre fare riferimento a celle/intervalli ove si verifica un cambiamento "fisico" del loro valore.

Detto questo ti consiglio di allegare il tuo file e vediamo di cosa si tratta.




Come immaginavo, però non riesco comunque a trovare un modo per rendere il tutto automatico. Ho allegato il file

https://www.dropbox.com/s/fhry6by8y6s1ut9/ProvaToposMacro.xlsm?dl=0
[Modificato da LukeAC 13/10/2015 22:23]
Post: 2.780
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Veteran
2013
OFFLINE
14/10/2015 09:45

non posso scaricare "password???"
Comunque ci sarà sicuramente la "modifica fisica" di una determinata cella per far modificare il valore della formula in A1
Usa quella per il Worksheet_Change e gli dici di ricalcolare il foglio. Oppure gli cambi direttamente la foto
Excel 2013
14/10/2015 09:55

Re:
raffaele1953, 14/10/2015 09:45:

non posso scaricare "password???"
Comunque ci sarà sicuramente la "modifica fisica" di una determinata cella per far modificare il valore della formula in A1
Usa quella per il Worksheet_Change e gli dici di ricalcolare il foglio. Oppure gli cambi direttamente la foto




Strano, non avevo messo password, prova con questo link
http://dropcanvas.com/3ffuv

in ogni caso, questa è la macro
Macro
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Me.Shapes("finestra").DrawingObject.Formula = "$W$6" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
End If
End Sub
Post: 4.515
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
14/10/2015 09:58

Scarica file
Ciao Raffaele, devi avere un account dropbox per scaricare.

ti allego il file scaricato

per LukeAC in Forum non riconosce gli allegati con estensione Xlsm, con le macro percui bisogna prima comprimerlo con zip o rar e po allegarlo nella discussione.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 2.781
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Veteran
2013
OFFLINE
14/10/2015 12:26

Il secondo Link va bene
Però non visualizzo la foto, pertanto il problema mi sembra differente.
A parte le diverse versioni d'excel, quella "finestra" in A9:F28 non credo sia giusta.

Sono vecchio (testa vecchia), tante volte non capisco le Vostre stramberie.
Forse desiderate non farle vedere ai colleghi. Devo andare in Opzioni excel per visualizzare la sbarra verticale e vedere le foto?
Facciamo finta che devi caricare 1000 foto, quanto pensi che il Tuo file diventa pesante?

"""Agli utenti dico, non inserite foto, collegatele in una directory a parte (rar o usb)"""

Per il Tuo problema, visualizzo le foto in W61:W63
Visto la formula in P4 (facile), ci devo pensare come fare.
Il VBA non intercetta cambi di valori sulle formule

Ciao By Sal
Vedo che la formula si appoggia A4:A6 e A8. Tramite il Worksheet_Change puoi farlo.
Sei più bravo con le foto, oppure provo a farlo io
Excel 2013
14/10/2015 12:40

Re:
raffaele1953, 14/10/2015 12:26:

Il secondo Link va bene
Però non visualizzo la foto, pertanto il problema mi sembra differente.
A parte le diverse versioni d'excel, quella "finestra" in A9:F28 non credo sia giusta.

Sono vecchio (testa vecchia), tante volte non capisco le Vostre stramberie.
Forse desiderate non farle vedere ai colleghi. Devo andare in Opzioni excel per visualizzare la sbarra verticale e vedere le foto?
Facciamo finta che devi caricare 1000 foto, quanto pensi che il Tuo file diventa pesante?

"""Agli utenti dico, non inserite foto, collegatele in una directory a parte (rar o usb)"""

Per il Tuo problema, visualizzo le foto in W61:W63
Visto la formula in P4 (facile), ci devo pensare come fare.
Il VBA non intercetta cambi di valori sulle formule

Ciao By Sal
Vedo che la formula si appoggia A4:A6 e A8. Tramite il Worksheet_Change puoi farlo.
Sei più bravo con le foto, oppure provo a farlo io




La foto comparirà nella "finestra"; per farle comparire basta scrivere nella casella P5 numeri da 1 a 3, e la figura comparirà dentro la finestra, che sta in alto a destra(le foto che stanno in W61:W63 compariranno nella finestra).
Non mi sono preoccupato della pesantezza del file, perché oltre a quelle tre immagini non devo metterne altre.

Nella cella P5, quella che fa variare le immagini, volevo mettere la formula che al momento sta in P4, però non riesco a fare una macro che mi cambi le immagini al cambio del risultato dovuto alla formula.
Post: 2.783
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Veteran
2013
OFFLINE
14/10/2015 17:44

Ti allego un codice
Pero sono "quasi sicuro che quella non sia una foto"

>>>Me.Shapes("finestra").DrawingObject.Formula = "$W$6" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)

Io faccio solo un'esempio.
Ammettiamo che cambi solo le celle gialle/arancioni
Si puo fare nel Worksheet_Change tramite le celle selezionate...
ex >>>If Not Intersect(Target, Range("B4,B5,B6")) Is Nothing Then
Puoi aggiugerne altre se desideri...

Quello che non riesco è visualizzare la foto. Eppure mi sembra giusto.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4,B5,B6")) Is Nothing Then
    If Range("P4") = 1 Then
        MsgBox "Foto 1"
        Me.Shapes("finestra").DrawingObject.Formula = "$W$6" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
    ElseIf Range("P4") = 2 Then
        MsgBox "Foto 2"
        Me.Shapes("finestra").DrawingObject.Formula = "$W$7" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
    ElseIf Range("P4") = 3 Then
        MsgBox "Foto 3"
        Me.Shapes("finestra").DrawingObject.Formula = "$W$8" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
    End If
End If
End Sub


Fammi sapere

Excel 2013
14/10/2015 20:08

Re:
raffaele1953, 14/10/2015 17:44:

Ti allego un codice
Pero sono "quasi sicuro che quella non sia una foto"

>>>Me.Shapes("finestra").DrawingObject.Formula = "$W$6" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)

Io faccio solo un'esempio.
Ammettiamo che cambi solo le celle gialle/arancioni
Si puo fare nel Worksheet_Change tramite le celle selezionate...
ex >>>If Not Intersect(Target, Range("B4,B5,B6")) Is Nothing Then
Puoi aggiugerne altre se desideri...

Quello che non riesco è visualizzare la foto. Eppure mi sembra giusto.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4,B5,B6")) Is Nothing Then
    If Range("P4") = 1 Then
        MsgBox "Foto 1"
        Me.Shapes("finestra").DrawingObject.Formula = "$W$6" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
    ElseIf Range("P4") = 2 Then
        MsgBox "Foto 2"
        Me.Shapes("finestra").DrawingObject.Formula = "$W$7" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
    ElseIf Range("P4") = 3 Then
        MsgBox "Foto 3"
        Me.Shapes("finestra").DrawingObject.Formula = "$W$8" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
    End If
End If
End Sub


Fammi sapere





Si fanno passi avanti.
Ho usato il codice che mi ha scritto, ed è sicuramente meglio di prima. Prima di tutto, ho spostato B4, B5 e B6 su H4, H5 e H6, che sono le celle che io vado a variare, e dato che le immagini non comparivano le ho divise in tre colonne, infatti adesso sono in "$V$6", "$W$6" e "$X$6".
Sembrava troppo facile, infatti si è presentato subito un problema.
Se io cerco di far comparire le varie figure, cambiando i valori nelle celle H, la prima figura compare, le altre due no, però se io faccio al contrario, cioè metto i valori per la figura tre, e dopo cerco di far comparire la due, quest'ultima compare. Non capisco cosa possa essere. La prima volta non parte la seconda si. Le allego il file aggiornato.

Provi lei stesso inserendo valori in alternanza su H4=12 e su H6=10

La ringrazio per tutto :)
Post: 2.784
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Veteran
2013
OFFLINE
14/10/2015 22:10

Come ho detto, qualcosa non mi quadra.

Cambiando alcuni valori in H4:H6 (ex 1.2.3), noto l'indirizzo della "finestra" =$X$63
Ma in $X$63 non c'è nulla

Cambiando i valori in H4:H6 (ex 1.2.1), noto l'indirizzo della "finestra" =$V$61
OK vedo la foto

Cambiando i valori in H4:H6 (ex 2.1.2), noto l'indirizzo della "finestra" =$X$62
Ma in $X$62 non c'è nulla

Pertanto è la formula sotto che sbaglia

Premesso che ho fatto la terza media e non capisco come hai creato la "finestra"
Compreso la riga >>>Me.Shapes("finestra").DrawingObject.Formula = "$V$6" & Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)
Se me la spieghi, Ti sono grato

Ps . Non riportare le risposte, allungano il post e non si capisce piu nulla
Excel 2013
14/10/2015 23:33

Come avevo già scritto nei primi messaggi mi sono aiutato con internet, quindi nemmeno io so come e perché è strutturata, l'ho semplicemente implementata e studiata cercando di capire in qualche modo il suo funzionamento.

In ogni caso con la sua ultima osservazione, mi è venuta un'idea per risolvere temporaneamente il mio problema, cioè inserire le immagini nelle caselle in cui fa riferimento la "finestra".
La ringrazio infinitamente per tutto il supporto che mi ha dato. [SM=g27823]
Post: 2.787
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Veteran
2013
OFFLINE
15/10/2015 13:36

Trovato (mà non garantisco che sia corretto), nelle tre righe
>>>.......Application.WorksheetFunction.Min(Int(Abs(Target.Value)), 5536)

Devi modificarle in questo modo:
......Application.WorksheetFunction.Min(Int(Abs(1)), 5536)
......Application.WorksheetFunction.Min(Int(Abs(2)), 5536)
......Application.WorksheetFunction.Min(Int(Abs(3)), 5536)
[Modificato da raffaele1953 15/10/2015 13:38]
Excel 2013
15/10/2015 14:34

Quasi non ci credo, funziona perfettamente; però avendo diviso le tre figure in tre colonne diverse, ho messo (1) in tutte e tre le formule.
Non so come ringraziarla. Grazie tante. [SM=g27836]
Vota: 15MediaObject5,00214 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Excel macro (3 messaggi, agg.: 02/06/2017 09:21)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 03:04. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com