Thanks everyone for your suggestions, but especially Inferrd. Your first suggestion enabled me to move on. I didn't know you could set the encoding in StreamReader that way.
Code:
Dim sr As New IO.StreamReader(myStream, System.Text.Encoding.GetEncoding("ISO-8859-1"))
or even just
Code:
Dim sr As New IO.StreamReader(myStream, myWebClient.Encoding)
works.
However...
I'm actually scraping more than one webpage. The other one now started giving me problems with this new approach:
ö becomes ö
ä becomes ä
é becomes é
etc...
So not diamond question marks the other way around this time.
I've examined myWebClient.Encoding and can see no difference between the attributes of the two websites. I'm beginning to suspect that one of them is reporting one type of encoding, but is actually another one. At the same time, they both render properly in Chrome.
So this ugly solution is what I've come up with so far, basically hardcoding one behavior if the link sent to the function is a specific one. I guess I'll see how many special cases I have to define. Do you guys have any suggestion on how to improve this? Or maybe explain what's going on with these webpages? 
Code:
Private Function ProcessURL(url As String) As String
Dim myWebClient As New Net.WebClient()
'this next line has no effect
'myWebClient.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1")
Dim myStream As IO.Stream = myWebClient.OpenRead(url)
Dim myString As String
If url Like "*codeword*" Then
'either approach works here
'Dim sr As New IO.StreamReader(myStream, System.Text.Encoding.GetEncoding("ISO-8859-1"))
Dim sr As New IO.StreamReader(myStream, myWebClient.Encoding)
myString = sr.ReadToEnd()
Else
Dim sr As New IO.StreamReader(myStream)
myString = sr.ReadToEnd()
End If
myStream.Close()
Return myString
End Function
P.S. I tried to "dim" the StreamReader before the if statement, but then I don't know how to enforce the encoding on it afterwards. Sorry, I don't know the proper lingo...