Primeiro se está usando o MySQL então deve primeiro saber o seguinte:
se o campo for tipo integer então não deve utilizar aspas simples
tbUser.Open "Select * from usuario where codigo_usuario = " & txt_codigo_usuario.Text , cn, adOpenStatic, adLockOptimistic
utilize aspas simples somente se o campo for tipo char ou varchar
o recordcount não funcionará com o ADO
porém não entendi esta questão
If (tbUser.RecordCount = 0) Then ' se não houver registros no banco fazer a pergunta?
vPergunta = MsgBox("Deseja realmente excluir o registro?", vbQuestion + vbYesNo, "Pergunta")
If (vPergunta = vbYes) Then
tbUser.Delete
End If
End If
não deveria ser algo + ou - assim
IF tbUser.RecordCount<>0 then ' Enquanto o campo conter registros fazer a pergunta.
vPergunta = MsgBox("Deseja realmente excluir o registro?", vbQuestion + vbYesNo, "Pergunta")
If (vPergunta = vbYes) Then
tbUser.Delete
End If
End If
porém como dito anteriormente não irá funcionar, mas poderá substiruir pelo seguinte:
IF tbUser.EOF = true and tbUser.BOF = true then
Exit Sub
Else
vPergunta = MsgBox("Deseja realmente excluir o registro?", vbQuestion + vbYesNo, "Pergunta")
If (vPergunta = vbYes) Then
tbUser.Delete
End If
End If
Bom faça um teste com as alterações surgeridas e veja se, retorna o resultado esperado.