Option Strict is a good idea - it lets you catch problems at compile time, rather than at runtime - which means you don't have to execute the code before you find out it's "wrong" sometimes. Good idea to always leave it on.
One of the things it complains about is when you do this:
Dim o as Object = ...
Dim s as String = o
Because although all Strings are derived from Object (as are all classes in fact) not all Objects are Strings - so when you try to assign an Object to a String variable the system is saying "Are you sure this is right? "o" may not be a String, so this code could fail as run time."
In the case of your code, the SelectedItem property always returns an Object (because it has no idea what you might have stuffed in there) so you need to explicitly cast it to a String (or whatever you put in there, it doesn't have to be a String at all) to use it:
Dim Workshop As String = CStr(lstWorkshop.SelectedItem)
Or
Dim Workshop As String = DirectCast(lstWorkshop.SelectedItem, [String])