Visto che il risultato è sempre un unico numero, è meglio usare ExecuteScalar al posto di ExecuteReader:
codice:objConn.Open() strsql = "SELECT MAX(nrprog) FROM registro" Dim objCommand2 As New OleDbCommand(strsql, objConn) L22.Text = objCommand2.ExecuteScalar() objConn.Close()