Si usas SQL Server esta solucionado, pues es mejor utilizar un procedimiento almacenado con un parametro de tipo cadena y desde VB lo llamas pasandole el parametro
por ejemplo:
El Porcedimiento almacenado seria mas o menos asi:
------------------------------------------------------------
CREATE PROCEDURE pruebita
@nombre varchar(20)
AS
SELECT * FROM Tabla WHERE nombre = @nombre
GO
-----------------------------------
para llamarlo desde VB seria:
-----------------------------------
Dim cnx As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim prm As New ADODB.Parameter
Dim rst As New ADODB.Recordset
cnx.Open "Provider=SQLOLEDB.1; etc."
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "pruebita"
Set prm = cmd.CreateParameter("nom", adVarChar, adParamInput, 20)
prm.Value = "Julian's" <----aki como veras no hay problema
cmd.Parameters.Append prm
cmd.ActiveConnection = cnx
Set rst = cmd.Execute <----aki te devuelve el recordset
El chiste es utilizar un parametro para no estar concatenando con el apostrofe (') ke es donde esta el problema.
Claro esto es con SQL Server, es la ventaja de utilizar un SGBD en regla y no el motor MS JET (access).
Saludos.