Pagina 1 di 1

Problemi con macro per excel

Inviato: 23 nov 2017 09:52
da Proffe
Uso excel 2002 per uso personale e mi diverto a fare macro. Tra le altre ne ho scritta una che conta i file di un certo tipo presenti in una cartella e che qui riporto:
Attribute VB_Name = "Modulo2"
Sub ContaFileXls()
Dim nomf()
Set fs = Application.FileSearch
With fs
.LookIn = ActiveWorkbook.Path
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
numf = .FoundFiles.Count
ReDim nomf(numf)
For i = 1 To numf
nomf(i) = .FoundFiles(i)
Next i
Else
MsgBox "Non ho trovato file xls"
End If
End With
End Sub

Provata per un amico sul suo Excel, credo l'ultima versione, mi riporta un errore nella riga

set fs=Application.FileSearch

che non capisco.
C'è qualcuno che mi può dare una mano?
Grazie

Re: Problemi con macro per excel

Inviato: 09 lug 2019 11:07
da famasoft
L'errore viene segnalato perché 'fs' non risulta dichiarata prima del suo utilizzo.
Il problema si manifesta perché nella versione Excel su cui è stata testa la macro risulta impostata per default la clausola:
Option Explicit
all'inizio del codice del modulo stesso.

La soluzione è semplice, o si toglie questa impostazione o MEGLIO ANCORA si procede a dichiarare preventivamente le 'variabili' utilizate nel corpo della routine.
E' sufficiente aggiungere la seguente linea di codice all'inizio della routine :
Dim fs
così come fatto per la variabile 'nomf'.
Ovviamente occorre dichiarare TUTTE le variabili usate come, nel caso specifico, 'NUMF' e 'I'.
Meglio ancora è definire anche il tipo di variabile come nell'esempio seguente
Dim nomf() As String
Dim numf As Long
Dim i As Long
e studiare pure come le variabili possono essere usate nell'ambito di un programma, anche se semplice, per ottimizzarlo al meglio.

Anche se con moltissimo ritardo nella risposta, spero possa comunque essere di aiuto a qualcuno.

Re: Problemi con macro per excel (risolto)

Inviato: 09 lug 2019 11:31
da Proffe
Ringrazio famasoft che mi ha permesso di risolvere il problema.