Non funziona perchè dopo aver aperto il file, esegui il ciclo e dopo non lo chiudi più. In questo modo la procedura riapre il file che viene trovato già aperto e quindi ti da l'errore.
In pratica devi modificare la chiusura del ciclo e del file:
codice:
Case is = 1
NomeFile = "c:\2.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, nomefile
List2.AddItem (nomefile)
Wend
Close #1
Quindi:
codice:
Private Sub List1_Click()
Dim NomeFile As String
Label1.Caption = List1.ListIndex
List2.Clear
Select Case List1.ListIndex
Case Is = 0
NomeFile = "c:\1.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
Case Is = 1
NomeFile = "c:\2.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
Case Is = 2
NomeFile = "c:\3.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
Case Is = 3
NomeFile = "c:\4.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
End Select
End Sub