Migliorare una macro

Buongiorno a tutti.

 

In un mio foglio excel ho già attiva e funzionante la seguente macro:

 

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Select Case Target.Value
Case "PU"
a = "Y:\Giro librerie\2 - INSTALL RPR - PRO\MAIL SOLARI\Installazione in produzione 200213.msg"
Case "PC"
a = "Y:\Giro librerie\2 - INSTALL RPR - PRO\MAIL SOLARI\Installazione in produzione 200213_2.msg"
End Select
ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:=a, SubAddress:="", _
TextToDisplay:=Target.Value
Target.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End If
End Sub

 

Volevo sistemarla e modificarla in modo da ottenere le seguenti miglirie:

 

1. quando seleziono dal menù a tendina una scelta fra PU o PC il sistema mi presenta subito la richiesta di aprire il collegamento ipertestuale ma se clicco su annulla mi rilascia l'errore di run time - collegamento ipertestuale interrotto...come posso modificare la macro in modo che anche scegliendo di non aprire il collegamento non mi dia più il messaggio di errore?

2. è possibile abbinare 2 diverse finestre di commento a seconda se scelgo PU o PC ? 

 

Grazie in anticipo a chiunque riuscisse ad aiutarmi.

Massimo

 

Informazioni domanda


Ultimo aggiornamento febbraio 27, 2018 Visualizzazioni 144 Si applica a:
Risposta

La seconda con il msgbox è perfetta.

Come posso però fare in modo che il collegamento IPERTESTUALE mi si apra solo dopo l'ok della msgbox "Hai selezionato: PU" o dell'altra msgbox?

 

Grazie mille.

Max


Vedi un po' se va bene. Ho aggiunto un Case Else, inutile se utilizzi una convalida dati sulla cella A1:

 

Private Sub Worksheet_Change(ByVal Target As Range)
 
    Dim a As String
    Dim s As String
    Dim bln As Boolean
    Dim lRisposta As Long
   
    With Target
    
        If .Address = "$A$1" Then
             Select Case Target.Value
                 Case "PU"
                     a = "C:\Prova\txt1.txt"
                     s = "PU"
                 Case "PC"
                     a = "C:\Prova\txt2.txt"
                     s = "PC"
                     MsgBox "Hai selezionato: PC"
                Case Else
                    MsgBox "Nessuna selezione valida!"
                    Exit Sub
             End Select
            
             lRisposta = MsgBox("Hai selezionato: " & s & ", procedere?", _
                vbYesNo + vbQuestion, "Attenzione!")
               
            If lRisposta = vbYes Then
                ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:=a, SubAddress:="", _
                TextToDisplay:=.Value
                On Error Resume Next
                .Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
                If Err.Number <> 0 Then
                    MsgBox "Operazione annullata"
                    Exit Sub
                End If
            End If
           
         End If
                    
    End With
    
End Sub

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Risposta

Ci mancherebbe.

Mi permettevo solo di sollecitare senza nessuna pretesa.

Non esiste un numero preciso in quanto di volta in volta sarebbe da valutare.

Comunque ipotizzerei 3 celle giusto per capire il meccanismo...

Grazie di nuovo.

Massimo


Qui trovi il file utilizzato per l'esempio:

http://www.maurogsc.eu/esempiforum13/changevariabile.zip

 

In pratica funziona così:

  • Nel foglio Dati ho una elenco ordinato per la colonna A con tutte le celle che utilizzo e i relativi riferimenti dei files da aprire in colonna B e C a seconda della scelta che andrò a fare. Ripeto, per utilizzare l'algoritmo di ricerca che ho utilizzato(il più veloce disponibile) l'elenco *deve* essere ordinato. Altrimenti, cambiamo algoritmo.
  • Nel Foglio1 ho colorato in giallo(solo per comodità) le celle delle quali ho messo il riferimento nella colonna A del foglio Dati. Selezionando una di quelle celle e inserendo PU o PC aprirai uno dei due files impostati nel foglio Dati per quel riferimento.
  • I file da aprire, si trovano nel mio caso tutti in C:\Prova, quindi ho utilizzato una costante(sPath). Se i file si trovano in path differenti, nelle colonne B e C del foglio Dati inserisci la path completa del file e non utilizzare la costante.

 

Per qualsiasi cosa, sono(quasi) sempre qui. Quasi, eh... ;-)

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.