Ciao Giuseppe,
Ricontrollando il codice, posso confirmare la presenza di un bug in quanto posso replicare la tua esperienza in un particolare scenario.
Quindi, ho adattato il codice per renderlo più robusto e resistente. Allo stesso tempo, ho approfittato al fine di estendere il codice e aumentare la sua funzionalità.
Pertanto, prova a sostituire il codice precedente con qualcosa del genere:
'=========>>
Option Explicit
'--------->>
Private Sub CommandButton12_Click()
Dim WB As Workbook
Dim SH As Worksheet
Dim rngUtenti As Range, rCell As Range
Dim fd As FileDialog
Dim LRow As Long
Dim iCtr As Long
Dim FileSelezionato As Variant
Dim sPath As String, sPercorso As String
Dim sStr As String, aStr As String, bStr As String
Dim sMsg As String, sReport As String
Dim Res As Variant
Dim bTerminata As Boolean
Dim Res2 As VbMsgBoxResult, Res3 As VbMsgBoxResult
Dim arrFoto() As Variant
Const sFoglio As String = "Foglio1" '<<=== Modifica
Const sFolder As String = "FotoUtenti" '<<=== Modifica
sStr = Application.PathSeparator
sPath = ThisWorkbook.Path
sPercorso = sPath & sStr & sFolder
Res = Dir(sPercorso, vbDirectory)
If Res = vbNullString Then
MkDir sPercorso
End If
Set WB = ThisWorkbook
Set SH = WB.Sheets("Foglio1")
With SH
LRow = .Cells(Rows.Count, "A").End(xlUp).Row
Set rngUtenti = .Range("A2:A" & LRow)
ReDim arrFoto(1 To LRow)
End With
For Each rCell In rngUtenti.Cells
With rCell
aStr = .Value
SelezionaFotografia:
Res3 = MsgBox(Prompt:= _
"Ora si sta selezionando una fotografia per " _
& aStr & vbNewLine _
& "nella cella " & .Address(0, 0) _
& vbNewLine & vbNewLine _
& "Vuoi Continuare?", _
Buttons:=vbYesNo, Title:="CONTINUARE?")
If Res3 = vbNo Then
sMsg = "La Macro è stata terminata!"
GoTo XIT
End If
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
If .Show = -1 Then
FileSelezionato = .SelectedItems.Item(1)
FileCopy FileSelezionato, sPercorso _
& sStr _
& aStr & ".jpg"
iCtr = iCtr + 1
arrFoto(iCtr) = aStr
Me.TextBox15.Text = FileSelezionato
Else
Res2 = MsgBox(Prompt:= _
"Non hai selezionato una fotografia per " _
& vbNewLine _
& aStr, _
Buttons:=vbRetryCancel, _
Title:="AVVISO!")
If Res2 = vbRetry Then
GoTo SelezionaFotografia
End If
End If
End With
End With
Next rCell
sMsg = "Finita!"
XIT:
Me.TextBox15.Text = vbNullString
Select Case iCtr
Case 0
sMsg = sMsg _
& vbNewLine & vbNewLine _
& "Nessuna fotografia è stata copiata"
Case 1
bStr = "La seguente fotografia è stata copiata "
Case Else
bStr = "Le seguente " _
& iCtr _
& " fotografie sono state copiate "
End Select
If CBool(iCtr) Then
ReDim Preserve arrFoto(1 To iCtr)
sReport = Join(arrFoto, vbNewLine)
sMsg = sMsg _
& vbNewLine & vbNewLine _
& bStr _
& " nella directory: " _
& sPercorso _
& vbNewLine & vbNewLine _
& sReport
End If
Call MsgBox(Prompt:=sMsg, _
Buttons:=vbInformation, _
Title:="REPORT")
Set fd = Nothing
End Sub
'--------->>
Private Sub UserForm_Initialize()
With Me
.CommandButton1.Caption = "Esci"
.CommandButton12.Caption = "Scegli Fotografie"
End With
End Sub
'--------->>
Private Sub CommandButton1_Click()
Unload Me
End Sub
'<<=========
Eseguendo il codice e selezionando una fotografia per ognuno dei nove utenti nell'elenco sul Foglio1 del mio file di prova, i nove file corrispondenti vengono copiati nella directory precisata da me, cioè la cartella FotoUtenti:

Potresti scaricare il mio file di prova Giuseppe#2_20151211.xlsm a:
**http://1drv.ms/1Z4k69S**
===
Regards,
Norman