Risultati da 1 a 5 di 5

Discussione: Conflitto tra due macro: inserimento immagine e Worksheet_Change



  1. #1
    L'avatar di Maurice315
    Clicca e Apri
    Data Registrazione
    Sep 2016
    LocalitÓ
    Napoli
    Messaggi
    5
    Versione Office
    2016
    Utile ricevuti
    0
    Utile dati
    1

    Question Conflitto tra due macro: inserimento immagine e Worksheet_Change

    Ciao a tutti! Premetto che non sono un esperto e che quello che ho fatto l'ho "combinato" da varie cose trovate qua e lÓ, spero proprio che qualcuno possa aiutarmi!

    Sto usando due codici, che apparentemente, per me non, dovrebbero interferire l'uno con l'altro.
    Il primo si riferisce all'inserimento/eliminazione di 1 o 2 immagini, che funziona come deve, infatti non ho problemi selezionando i vari Pulsanti di opzione:

    Codice: 
    Sub sceltaStruttura()    Dim A As Range
        Set A = Range("NomeStruttura")
        Dim MySht As Worksheet
        Dim MyPic As Shape
        Dim MyLeft As Single, MyTop As Single
        
        'SE LA CELLA NON Ŕ VUOTA
        If A.Value <> "" Then
        
        'ELIMINA OGNI IMMAGINE PRESENTE
                With Worksheets("Combinazioni")
                    For Each shp In .Shapes
                        If Not Application.Intersect(shp.TopLeftCell, .Range("S1:AE3")) Is Nothing Then
                            If shp.Type = msoPicture Then shp.Delete
                        End If
                    Next shp
                End With
    
    
        'INSERIRE IMMAGINE 1
                'posizione in pixel
                MyTop = 10
                MyLeft = 1250
        
                Set MySht = ActiveSheet
    '-----------------------------------------
        On Error GoTo vainerrore
    '-----------------------------------------
                Set MyPic = MySht.Shapes.AddPicture(ThisWorkbook.Path & "\" & A.Value & ".jpg", _
                            msoFalse, msoTrue, MyLeft, MyTop, -1, -1)
                'ridimensiona l'immagine
                MyPic.Height = 230
    
    
        'INSERIRE IMMAGINE2
                'posizione in pixel
                MyTop = 10
                MyLeft = 1650
        
                Set MySht = ActiveSheet
    '-----------------------------------------
        On Error GoTo vainerrore2
    '-----------------------------------------
                Set MyPic = MySht.Shapes.AddPicture(ThisWorkbook.Path & "\" & A.Value & "2" & ".jpg", _
                            msoFalse, msoTrue, MyLeft, MyTop, -1, -1)
                'ridimensiona l'immagine
                MyPic.Height = 230
                
    
    
        
        Else
        'ELIMINA LE IMMAGINI SE LA CELLA E' VUOTA
                With Worksheets("Combinazioni")
                    For Each shp In .Shapes
                        If Not Application.Intersect(shp.TopLeftCell, .Range("S1:AE3")) Is Nothing Then
                            If shp.Type = msoPicture Then shp.Delete
                        End If
                    Next shp
                End With
        End If
    Exit Sub
    '-----------------------------------------
    vainerrore:
        MsgBox "Nessuna immagine per la struttura selezionata."
        With Worksheets("Combinazioni")
                For Each shp In .Shapes
                    If Not Application.Intersect(shp.TopLeftCell, .Range("S1:AE3")) Is Nothing Then
                        If shp.Type = msoPicture Then shp.Delete
                    End If
                Next shp
            End With
    '-----------------------------------------
    vainerrore2:
    'non fare niente di pi¨
    '-----------------------------------------
    End Sub






    Il secondo, relativo all'evento Worksheet_Change, mi resetta i campi relativi alla singola opzione e anche in questo caso, mi funziona senza problemi (per attivarlo bisogna selezionare dal men¨ a tendina "Reset struttura"):
    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    'HOTEL
    Dim A As Range
    Dim cl As Range
    Set A = Range("RangeStrutture")
       
         
    'HOTEL
    For Each cl In A
       If cl.Value = "Reset struttura" Then
       
            'STRUTTURA, NOME E COSTO
            cl.Value = " "
            cl.Offset(0, 1).Value = ""
            cl.Offset(0, 2).Value = ""
            
            'CHECK-IN E OUT
            cl.Offset(0, 4).Value = ""
            cl.Offset(1, 4).Value = "CHECk-IN"
            cl.Offset(1, 6).Value = "CHECk-IN"
            cl.Offset(0, 8).Value = ""
            cl.Offset(1, 8).Value = "CHECk-OUT"
            cl.Offset(1, 10).Value = "CHECk-OUT"
            
            'DETTAGLI RIGA SOPRA
            cl.Offset(0, 12).Value = "DIST. CENTRO"
            cl.Offset(0, 13).Value = "COLAZIONE"
            cl.Offset(0, 14).Value = "LETTO"
            cl.Offset(0, 15).Value = "BAGNO"
            cl.Offset(0, 16).Value = "CUCINA"
            cl.Offset(0, 17).Value = "WIFI"
            cl.Offset(0, 19).Value = ""
            
            'DETTAGLI RIGA SOTTO
            cl.Offset(1, 12).Value = "DIST. MEZZI"
            cl.Offset(1, 13).Value = "ALTRI PASTI"
            cl.Offset(1, 14).Value = "PULIZIE"
            cl.Offset(1, 15).Value = "COMFORT"
            cl.Offset(1, 16).Value = "SAFE-BOX"
            cl.Offset(1, 17).Value = "PARK"
            cl.Offset(1, 19).Value = ""
            
       End If
    Next cl
    
    
    End Sub

    Il problema nasce se seleziono la cella relativa ad una qualsiasi struttura (anche senza cambiare voce dal men¨ a tendina) e poi provo a selezionare un qualsiasi Pulsante di opzione: la macro per l'inserimento delle immagini "impazzisce" e mi riporta sempre e solo errore.

    Grazie in anticipo a chiunque voglia darmi una mano!
    File Allegati File Allegati

  2. #2
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    LocalitÓ
    Livorno
    EtÓ
    71
    Messaggi
    829
    Versione Office
    2010
    Utile ricevuti
    116
    Utile dati
    1

    Re: Conflitto tra due macro: inserimento immagine e Worksheet_Change

    non ho capito come usare il file di esempio

  3. #3
    L'avatar di Maurice315
    Clicca e Apri
    Data Registrazione
    Sep 2016
    LocalitÓ
    Napoli
    Messaggi
    5
    Versione Office
    2016
    Utile ricevuti
    0
    Utile dati
    1

    Re: Conflitto tra due macro: inserimento immagine e Worksheet_Change

    Ciao patel, grazie per l'interessamento.
    Per testare il file potresti fare cosý:

    1. Seleziona vari pulsanti di opzione a tua scelta (ad esempio quelli relativi alle prime tre voci nell'elenco), per verificare il corretto funzionamento della macro che gestisce l'inserimento delle immagini: visto che l'immagine deve stare nella stessa cartella del file, salva un'immagine qualsiasi e dagli uno dei nomi indicati nella colonna "NOME" (per esempio, ImmagineA.jpg)


    2. Dopo potresti testare l'evento Worksheet_Change: seleziona una struttura e poi scegli "Reset struttura". Questo serve ad "azzerare" tutte le voci di quella struttura.


    3. Ora prova di nuovo a cambiare opzione come nel punto 1, dovrebbe comparirti l'errore. Questo succede anche se non clicchi su Reset struttura, ma semplicemente clicchi sulla cella, senza aprire il men¨ a tendina.

    Spero sia pi¨ chiaro ora :)

  4. #4
    L'avatar di Anthony
    Clicca e Apri
    Data Registrazione
    Sep 2016
    LocalitÓ
    Ivrea (TO)
    Messaggi
    434
    Versione Office
    2003-2010-2016
    Utile ricevuti
    266
    Utile dati
    36

    Re: Conflitto tra due macro: inserimento immagine e Worksheet_Change

    Non ho guardato il tuo file, ma in questa parte devi invertire i due If:
    Codice: 
    'CICLO ERRATO:
                    For Each shp In .Shapes
                        If Not Application.Intersect(shp.TopLeftCell, .Range("S1:AE3")) Is Nothing Then
                            If shp.Type = msoPicture Then shp.Delete
                        End If
                    Next shp
    Infatti il "dropdown arrow" della convalida e' una shape che non dispone della proprieta' TopLeftCell.
    Quindi
    Codice: 
                    For Each shp In .Shapes
                        If shp.Type = msoPicture Then
                            If Not Application.Intersect(shp.TopLeftCell, .Range("S1:AE3")) Is Nothing Then
                                shp.Delete
                            End If
                        End If
                    Next shp
    Ciao

  5. I seguenti utenti hanno dato un "Utile"


  6. #5
    L'avatar di Maurice315
    Clicca e Apri
    Data Registrazione
    Sep 2016
    LocalitÓ
    Napoli
    Messaggi
    5
    Versione Office
    2016
    Utile ricevuti
    0
    Utile dati
    1

    Re: Conflitto tra due macro: inserimento immagine e Worksheet_Change

    Perfetto! Grazie mille!

Discussioni Simili

  1. Inserimento immagine foglio Excel
    Di Paolerrai nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 31/03/17, 10:41
  2. [Risolto] inserimento immagine con convalida
    Di mb63 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 02/01/17, 10:25
  3. Worksheet_Change
    Di alfrimpa nel forum Domande su Excel VBA e MACRO
    Risposte: 7
    Ultimo Messaggio: 23/08/16, 17:51
  4. Risposte: 23
    Ultimo Messaggio: 10/07/16, 20:10
  5. Test inserimento immagine
    Di Baloon_50 nel forum Test dei vostri post
    Risposte: 1
    Ultimo Messaggio: 23/09/15, 23:27

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •