Sviluppare funzionalita su Microsoft Office con VBA Con errore aprire un altra immagine e passare al prossimo comando.

Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #32316 Score: 0 | Risposta

    marco_budin
    Partecipante
      2 pts

      buongiorno a tutti.

      ho una problematica che non riesco a trovare il codice corretto.

      ho creato delle immagini dinamiche collegate a dei file esterni in una cartella. Sono 5 spazi immagini dinamiche. Purtroppo può capitare che non ci sia L immagine per uno di questi spazi. In quanto non previsto. Chiaramente in questo caso va in errore. E mi manda in palla il programmino. Così mi mettere in immagine “no immagine” e non va in palla in programmino  🙂

      Il codice Vba é questo:

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim strIMG1 As String
      Dim strIMG2 As String
      Dim strIMG3 As String
      Dim NomeFile1 As String
      Dim NomeFile2 As String
      Dim NomeFile3 As String
      
      NomeFile1 = Sheets("Scheda").Range("b12")
      strIMG1 = ThisWorkbook.Path & "\File\" & NomeFile1
      Worksheets("Scheda").Image1.Picture = LoadPicture(strIMG1)
      
      NomeFile2 = Sheets("Scheda").Range("b16")
      strIMG2 = ThisWorkbook.Path & "\File\" & NomeFile2
      Worksheets("Scheda").Image2.Picture = LoadPicture(strIMG2)
      Application.ScreenUpdating = False
      
      NomeFile3 = Sheets("Scheda").Range("b20")
      strIMG3 = ThisWorkbook.Path & "\File\" & NomeFile3
      Worksheets("Scheda").Image3.Picture = LoadPicture(strIMG3)
      
      Application.ScreenUpdating = True
      
      End Sub

      Ho visto che dovrei mettere On Error Resume Next e poi L’ if. Ma non so cosa mettere dopo L uf. O basta L error?

      ma non so dove metterò nel codice. Devo metterlo ovunque?

      Praticamente quando non riesce ad aprire questa immagine: 

      Worksheets("Scheda").Image1.Picture = LoadPicture(strIMG1)

      Allora dovrebbe mettere questa immagine con un altro percorso (chiaramente devo mettere nel codice quale percorso ha strNo1):

      Worksheets("Scheda").Image1.Picture = LoadPicture(strNo1)

      Questo per tutti gli spazi immagine.

      spero che qualcuno mi possa aiutare a sistemare il codice.

      vi ringrazio come sempre

      saluti

      Marco

       

      #32317 Score: 0 | Risposta

      robby
      Partecipante
        2 pts

        Puoi fare così:

        NomeFile1 = Sheets("Scheda").Range("b12")
        strIMG1 = ThisWorkbook.Path & "\File\" & NomeFile1
        If Dir$(strIMG1) > "" then
            Worksheets("Scheda").Image1.Picture = LoadPicture(strIMG1)
        Else
            ' metti il percorso dell'immagine alternativa
        End If

        Fai la stessa cosa per le altre immagini.

        Però usare l'evento Change così non è proprio il massimo dell'efficienza perché ogni volta che modifichi una QUALSIASI cella del foglio, esegue il codice ogni volta.
        Sarebbe meglio filtrare solo le celle che contengono l'immagine utilizzando la funzione Intersect o verificando il Target.Address così da eseguire solo la parte di codice effettivamente necessaria.

         

        P.S. On Error Resume Next va utilizzato con molta parsimonia ed a ragion veduta, meno lo si usa meglio è perché gli errori vanno gestiti, non evitati. L'uso di questa istruzione può provocare molti problemi nell'esecuzione del codice, ti consiglio di documentarti bene sulla guida prima di utilizzarla.

        #32318 Score: 0 | Risposta

        PMC77
        Partecipante
          18 pts

          Scusa, ma in realtà questo argomento non è la continuazione del  #32303 ?

          Paolo

          #32321 Score: 0 | Risposta

          marco_budin
          Partecipante
            2 pts

            Ciao Robby! grazie mille del tuo prezioso aiuto e funziona tutto!! Si lo so, ma dovrei complicare il codice... e già sono in difficoltà con queste cose piccole... 🙂

            @ciao PMC77, in parte è la continuazione di quanto riportato nel posto #32303, ma è un altro argomento. Normalmente si dice all'interno del forum, di portare un tema per volta. e questa volta era relativo all'errore.

            saluti e a presto

            Marco

          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: Con errore aprire un altra immagine e passare al prossimo comando.
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: