Ci eri andato abbastanza vicino, con la tua Sub creaIper; l'ho modificata come segue, facendola diventare una sub richiamabile:
- Codice: Seleziona tutto
Sub creaIper(ByRef myT As Range)
'' Dim wk1 As Workbook 'dichiaro le variabili
Dim sh1 As Worksheet
Dim cartellainiziale As String 'MMM
On Error GoTo RigaErrore 'gestione errori
'' Application.ScreenUpdating = False
'' Set wk1 = ThisWorkbook 'metto i riferimenti ai files
Set sh1 = ThisWorkbook.Sheets("sommario") '++
cartellainiziale = "C:\LettD\__conferme officina\2019"
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = cartellainiziale
.Title = "Seleziona cartella e File"
.AllowMultiSelect = False
.Filters.Add "PDF", "*.pdf", 1 '+++
.Show
ActiveSheet.Hyperlinks.Add _
Anchor:=myT, _
Address:=.SelectedItems(1), _
TextToDisplay:=myT.Value, _
ScreenTip:="Apri " & .SelectedItems(1) 'MMM(4)
End With
Application.CutCopyMode = False
'' Application.DisplayAlerts = True
'' Application.ScreenUpdating = True
'riga sempre eseguita
RigaChiusura:
'Set a Nothing delle variabili oggetto
Set sh1 = Nothing
Set wk1 = Nothing
Exit Sub
'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
End Sub
Le modifiche al tuo codice sono nelle righe marcate +++ oppure MMM; alcune righe poi le ho eliminate commentandole con ' ' (doppio apostrofo)
Ho poi inserito una Worksheet_Change da cui la richiamo:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ckCol As Long, myC As Range
'
ckCol = 2 '<<< Colonna B
For Each myC In Target
If myC.Column = ckCol Then
If LCase(myC.Value) = "positivo" Then
Call creaIper(myC)
Else
'Cancella eventuali HLink presenti
myC.Hyperlinks.Delete
End If
End If
Next myC
End Sub
La Worksheet_Change si occupa di "chiamare" la Sub creaIper per inserire gli hyperlink ma anche di rimuovere eventuali hyperlinks su celle da cui viene rimosso "positivo"; inoltre l'uso di For Each myC In Target consente di gestire anche modifiche multiple (interviene ad esempio quando si cancellano piu' celle)
Prova e fai sapere...