Probabilmente il problema è dovuto al fatto che il metodo navigate non attende l'effettivo caricamento della pagina, di conseguenza nella riga di codice successiva Set d = Webbrowser1.Document l'assegnazione non ha luogo in quanto la proprietà Document non è ancora stata impostata. A me funzionava perchè il metodo navigate lo chiamavo in una sub a parte (un altro button) e attendevo che la pagina fosse caricata prima di caricare i dati nelle textbox.

Così dovrebbe andare:
codice:
    Dim d As IHTMLDocument3
    Dim el As IHTMLElement
    
    WebBrowser1.Navigate "http://www.libero.it"
    
    'attende il caricamento della pagina
    Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE
        DoEvents
    Loop
    
    'variabile documento
    Set d = WebBrowser1.Document
    
    'imposta username
    Set el = d.getElementsByName("LOGIN").Item(0)
    el.setAttribute "value", "alfabetagamma"
    
    'imposta password
    Set el = d.getElementsByName("PASSWD")(0)
    el.setAttribute "value", "xxxxxxxxx"
    
    'pulsante di invio
    Set el = d.getElementsByName("Act_Login")(0)
    el.Click
Ho inserito un loop di attesa che termina quando la pagina è stata caricata.

Ricorda che se cambi sito devi verificare l'attributo name dei tag input, inoltre se la pagina contiene frame bisogna cambiare leggermente il codice.


Fammi sapere, ciao