Try something like...
Dim temp As String = ""
Dim j As Integer
For j = 0 To 5
Try
temp += "UserID: " & Users.UserController.GetUser(PortalId, j, True).UserID.ToString() & "<br>"
temp += "UserName: " & Users.UserController.GetUser(PortalId, j, True).Username.ToString() & "<br>"
temp += "First Name: " & Users.UserController.GetUser(PortalId, j, True).FirstName.ToString() & "<br>"
temp += "Last Name: " & Users.UserController.GetUser(PortalId, j, True).LastName.ToString() & "<br>"
temp += "Location: " & Users.UserController.GetUser(PortalId, j, True).Profile.City & ", "
temp += Users.UserController.GetUser(PortalId, j, True).Profile.Region & " "
temp += Users.UserController.GetUser(PortalId, j, True).Profile.PostalCode
temp += "<br><br>"
Catch ex As Exception
temp += "UserID <b>" & j & "</b> does not exist in PortalID <b>" & PortalId & "</b><br><br>"
End Try
Next
Label4.Text = temp
Note the Try/Catch block. If you are looping using a simple 0 to n index, you can not assume the indexed userid is in the portalid. For example, 0 is not a valid userid. 1 is Host, 2 is Admin for PortalID 0, but 2 won't exist at all in PortalID 1. The better way to do this would be to pull an array of all the userids in the requested portal, then iterate through that array. Also, since you had your temp variable before the next loop, you are only setting the last value received. The -1-1 you got is from your ui.userid.tostring and dui.userid.tostring. You aren't passing j to userid anywhere, so it's picking up the anonymous user (-1).