codice:
With MDIForm1.CommonDialog1
        .CancelError = True             'Imposta CancelError su True
    On Error GoTo ErrHandler
        .Filter = "Discorsi interni (*.dsi)|*.dsi|Discorsi esterni (*.dse)|*.dse"
        .FilterIndex = 1
        .DefaultExt = "dsi"
        .Flags = cdlOFNNoChangeDir Or cdlOFNHideReadOnly Or cdlOFNFileMustExist Or cdlOFNNoReadOnlyReturn
        .DialogTitle = "Selezionare il file da aprire"
        .InitDir = app.Path & "\save"
        .FileName = MDIForm1.CommonDialog1.FileName
        .ShowOpen
       
        
ErrHandler:
        If Err.Number = 32755 Then      'é stato scelto Annulla 
            boolErrAnnSP2 = True
            Exit Sub
            Else: boolErrAnnSP2 = False
        End If
        
        FileName = .FileName   
        FileTitle = .FileTitle
'Visualizza nome e percorso del file in uso nella Barra di stato:
        MDIForm1.StatusBar1.Panels(2).Text = "File: " & MDIForm1.CommonDialog1.FileTitle
        FileNum = FreeFile()

'Esce se l'utente ha fatto clic su annulla
            If Len(FileName) = 0 Then
                Exit Sub
            End If
    End With
    'apre il file
    estensione = Right(FileName, 3)
    Open FileName For Input As FileNum
    Select Case estensione
    Case Is = "dsi"
    For k = 0 To 9
    Input #FileNum, dati(k).campo8, dati(k).campo2, dati(k).campo3, dati(k).campo4, dati(k).campo5, dati(k).campo7
    Next k
    Call trovanumdiscorso
    apricode = True
    frmcreaprogint.Show
    frmstampa.Show
    savecode = True
    Case Is = "dse"
    End Select
    Close #FileNum
End Sub
Il codice che ho riportato sopra funziona in maniera strana.Se avvio la mia applicazione da zero mi apre il file senza grossi problemi. Il guaio accade quando ho il programma aperto e prima di aprire un file ,lavoro con un altro e lo salvo.

In questo caso mi rimanda alla linea evidenziata di rosso dicendomi variabile del blocco width non impostata.

Facendo il debug noto che in effetti quella riga viene correttamente eseguita. Il problema si verifica
nella riga di codice

codice:
Open FileName For Input As FileNum
dove filenum vale due.
In questo caso mi ricomicia la procedura nuovamente partendo dalla gestione dell'errore(riga in blu)
e poi mi da l'errore.
Come mai accade una cosa del genere? Come posso rimediare?