Ciao,
il problema molto probabilmente non è nel codice “logico” ma nella formattazione del testo che hai copiato da Word o da un’altra fonte.
Quando si copia del codice VBA da Word o da un file formattato, il testo può contenere caratteri nascosti o virgolette non valide, che VBA interpreta come errore di sintassi o di compilazione. Ti spiego dove guardare:
Word sostituisce spesso le virgolette normali " con le virgolette tipografiche (“ ”).
In VBA queste non vengono riconosciute e causano errori di compilazione o evidenziano la riga in rosso.
Apri l’Editor VBA, cancella e riscrivi manualmente tutte le virgolette del codice.
Controlla gli spazi o i caratteri invisibili
A volte Word inserisce spazi non standard o caratteri Unicode invisibili.
Puoi individuarli cancellando e riscrivendo da zero solo la parte di codice che dà errore.
Copia il codice in Blocco note (Notepad) prima di incollarlo in Access.
In questo modo rimuovi qualsiasi formattazione indesiderata.
Io prima lo copio si note e poi lo trasferisco non faccio direttamente.
Verifica parentesi e concatenazioni
Se hai copiato un codice con concatenazioni di stringhe (es. & _ a fine riga), assicurati che:
IL tuo codice è pieno di errori, ti spiego quello che ti succede è perfettamente normale: il testo che hai ottenuto dal documento Word tramite OCR non è identico al codice sorgente VBA originale, anche se a occhio sembra corretto.
L’OCR tende a confondere caratteri come parentesi, punti, virgolette e spazi, che in VBA sono fondamentali per la compilazione.
Nel tuo caso ci sono vari errori di sintassi generati automaticamente, te ne evidenzio alcuni principali:
? Private Sub Worksheet Before DoubleCoByVal Target As Range, Cancel As Boolean)
?? Corretto:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
? If Not Intersect(Target, Range("D1" Nothing Then
?? Corretto:
If Not Intersect(Target, Range("D1")) Is Nothing Then
? Target. Value Date
?? Corretto:
Target.Value = Date
ed altri ......