La macro iniziale contiene
Sheets("Foglio1").Range("A1").Select
Riga = Range("A65536").End(xlUp).Row + 2
Range("A" & Riga).Select
Se la macro e' posizionata in un Modulo standard allora le istruzioni 2 e 3 fanno riferimento al foglio attivo, quindi a Foglio1.
Quando invece lo stesso codice lo inserisci in un modulo di classe (ad esempio il modulo di codice di Foglio2), le stesse istruzioni faranno riferimento invece al Foglio2, col risultato che la riga 3 cerca di selezionare una cella sul foglio non attivo, cosa che non e' possibile e che quindi genera l' errore.
Ovviamente anche il calcolo di Riga e' sbagliato, perche' calcolato sul contenuto di Foglio2 e non di Foglio1.
Fortunatamente la .Select e' quasi sempre inutile e puo' essere evitata, indicando esplicitamente foglio / indirizzo delle celle da manipolare, ed evitando in questo modo anche equivoci legati a riferimenti di default; come ha fatto correttamente Z0K nel suo intervento.
Le macro di evento vanno inserite nei moduli dei fogli a cui l' evento fa riferimento (per non sbagliare, tasto dx sul tab col nome foglio, scegli Visualizza codice per andare nel foglio giusto); il codice di Userform va in un suo modulo di codice (per non sbagliare2, partendo dalla userform usa il comando Visualizza codice per andare nel foglio giusto, oppure premi F7); il codice dei controlli ActiveX vanno nel modulo del foglio che ospita quei controlli (per non sbagliare3, seleziona il controllo e usa il comando Visualizza codice per andare nel foglio giusto). Le altre macro e le Function da te sviluppate le metterai in un Modulo standard (quello che si genera con Menu /Inserisci /Modulo).
Puoi inserire nel tuo Personal.xls Macro e Function che pensi di tenere sempre a portata di mano.
Ciao