Las correcciones a tu código:
1- La variable debe ser declarada de modo público, es decir 'fuera' de cualquier evento. Desde el Editor, ingresá al código de tu Userform. Como primer línea va la declaración de la variable y luego el resto de los códigos.
Dim nuevo As Byte
Private Sub (aquí la primer rutina de tu form)
'.....
End Sub
2- Al hacer el control de contenidos, no debe continuar con el resto del proceso si falla alguno. Falta el Exit Sub
If txtnombre.Text = "" Then
Msgbox "Ingresee Nombre....."
txtnombre.SetFocus
Exit sub
End If
If txtdireccion.text = "" Then
Msgbox "Ingrese direccion...."
txtdireccion.setfocus
exit sub
end if
'repetir para fecha y ocupacion
3- Estás moviendo el registro a la fila del 'ActiveCell'. La pregunta es: en el caso de tratarse de un Alta ya estás posicionado en la primer fila libre?
Este botón debiera servirte tanto para Altas como para Cambios o modificación del registro. Entonces considerando que ya estás seleccionando la fila correcta tanto si se trata de un Nuevo como de una Modificación, las instrucciones del With deben servir para los 2 casos. Esta sección de macro debe quedarte así entonces:
If nuevo = 1 Then
Set busco= Sheets.....
If not busco is nothing Then
Msgbox "Este paciente ya existe....."
Exit Sub
End if
End If
'y ahora el With para todos los casos
With Activecell
'.....
End With
Call desactivar
Call contar
End Sub
Si este botón solo sirve para casos de Nuevo, entonces no hace falta consultar si 'nuevo = 1'.
Ajustalo y probalo nuevamente a todo el código ... si aún te quedan errores deberás escribir todo aquí o podés enviarme tu formulario copiando el correo que aparece en mi sitio.