El siguiente artículo le presentará una función de VBA que eliminará todos los acentos Palabras en tus celdas. Simplemente llama a la función desde una celda para eliminar espacios.
Código VBA para eliminar acentos
- Abra el editor de Visual Basic

- Luego abres un Módulo

- Copie el siguiente código en el módulo.
Public Function EnleveAccent(strMot As String) As String
'Les A
strMot = Replace(strMot, "à", "a")
strMot = Replace(strMot, "á", "a")
strMot = Replace(strMot, "â", "a")
strMot = Replace(strMot, "ã", "a")
strMot = Replace(strMot, "å", "a")
strMot = Replace(strMot, "ä", "a")
strMot = Replace(strMot, "À", "A")
strMot = Replace(strMot, "Á", "A")
strMot = Replace(strMot, "Â", "A")
strMot = Replace(strMot, "Ã", "A")
strMot = Replace(strMot, "Ä", "A")
strMot = Replace(strMot, "Å", "A")
' Les E
strMot = Replace(strMot, "é", "e")
strMot = Replace(strMot, "è", "e")
strMot = Replace(strMot, "ê", "e")
strMot = Replace(strMot, "ë", "e")
strMot = Replace(strMot, "É", "E")
strMot = Replace(strMot, "È", "E")
strMot = Replace(strMot, "Ê", "E")
strMot = Replace(strMot, "Ë", "E")
'Les I
strMot = Replace(strMot, "î", "i")
strMot = Replace(strMot, "ï", "i")
strMot = Replace(strMot, "ì", "i")
strMot = Replace(strMot, "í", "i")
strMot = Replace(strMot, "Î", "I")
strMot = Replace(strMot, "Ï", "I")
strMot = Replace(strMot, "Ì", "I")
strMot = Replace(strMot, "Í", "I")
'Les O
strMot = Replace(strMot, "ò", "o")
strMot = Replace(strMot, "ó", "o")
strMot = Replace(strMot, "ô", "o")
strMot = Replace(strMot, "õ", "o")
strMot = Replace(strMot, "ö", "o")
strMot = Replace(strMot, "ø", "o")
strMot = Replace(strMot, "Ô", "O")
strMot = Replace(strMot, "Ò", "O")
strMot = Replace(strMot, "Ó", "O")
strMot = Replace(strMot, "Õ", "O")
strMot = Replace(strMot, "Ö", "O")
strMot = Replace(strMot, "Ø", "O")
'Les U
strMot = Replace(strMot, "ù", "u")
strMot = Replace(strMot, "ú", "u")
strMot = Replace(strMot, "ü", "u")
strMot = Replace(strMot, "û", "u")
strMot = Replace(strMot, "Ù", "U")
strMot = Replace(strMot, "Ù", "U")
strMot = Replace(strMot, "Û", "U")
strMot = Replace(strMot, "Ü", "U")
'Les autres lettres
strMot = Replace(strMot, "ç", "c")
strMot = Replace(strMot, "Ç", "C")
strMot = Replace(strMot, "ñ", "n")
strMot = Replace(strMot, "Ñ", "N")
strMot = Replace(strMot, "š", "s")
strMot = Replace(strMot, "Š", "S")
strMot = Replace(strMot, "ý", "y")
strMot = Replace(strMot, "ÿ", "y")
strMot = Replace(strMot, "Ý", "Y")
strMot = Replace(strMot, "Ÿ", "Y")
strMot = Replace(strMot, "ž", "z")
strMot = Replace(strMot, "Ž", "Z")
EnleveAccent = strMot
End Function
Cómo depurar un programa VBA
Si tiene problemas para encontrar la fuente de sus errores de VBA, esta guía le mostrará cómo usar el depurador.
Explicaciones del código
Lo primero que hay que notar es que hemos escrito una función (Función) y no un procedimiento (Sub). De hecho, la diferencia entre un procedimiento y una función es que una función devuelve un resultado. Y este resultado está contenido en el nombre de la función.
Luego, pasamos el contenido de la celda como parámetro y se "lee" cada carácter.
Si el carácter forma parte de la lista de caracteres a reemplazar, se le asigna la letra de reemplazo.
Sin embargo, existe un problema con caracteres muy especiales, como los caracteres ż, ł o ń. De hecho, estos caracteres están más allá de la posición 255 en la clasificación ASCII. sin embargo, ele Editor de Visual Basic, no muestra caracteres más allá del carácter 255. Pero podemos solucionar el problema creando una función en Power Query.

Usando en Excel
Llamar a una función personalizada en Excel es extremadamente sencillo. Simplemente escriba el signo igual, como lo haría con una función estándar, e introduzca el nombre de la función personalizada.
=Quitar acento(A2)

Y luego, solo queda copiar para las otras celdas para eliminar los acentos.

09/09/2024 a las 23:54
Hola/Buenas noches Sr. Le Guen,
Este pequeño error es para agradecerte tu trabajo excepcional, tus tutoriales, cada vez, de excelente calidad.
Sin exagerar y después de haber consultado numerosos sitios que tratan el tema "Excel", probablemente seas LA referencia en este campo.
Les agradezco de antemano los próximos vídeos, que (estoy convencido) siempre serán tan informativos como fascinantes.
Que tengas un buen día/tarde,
09/09/2024 a las 23:58
Muchísimas gracias
31/03/2024 a las 15:28
Muchas gracias, esto es muy útil.
27/11/2022 a las 20:37
Buenos dias. Intento utilizar tu función pero Excel me da el error "Error de compilación: variable no definida".
Coloqué la función en un módulo y se llama desde otro procedimiento público ubicado en el mismo módulo.
Yo lo uso de la siguiente manera:
[...]
'Repasamos la lista de clientes
Para iCount = 3 TB de última liga
Si wb.Worksheets("Clients").Range("C" & iCount).Value = NOMCli O wb.Worksheets("Clients").Range("C" & iCount).Value = EnleveAccent(NOMCli) O EnleveAccent( wb.Worksheets("Clients").Range("C" & iCount).Value) = NOMCli Luego 'Busca el nombre del cliente en la columna C (con tolerancia en acentos)
Si wb.Worksheets("Clients").Range("D" & iCount).Value = PnomCli O wb.Worksheets("Clients").Range("D" & iCount).Value = EnleveAccent(PnomCli) O EnleveAccent( wb.Worksheets("Clients").Range("D" & iCount).Value) = PnomCli Luego 'Comprueba que el nombre también coincida (con tolerancia en acentos)
numCli = iCount 'El número de cliente es igual al número de línea actual
encontrado = "bien"
Salir para
Si terminar
Si terminar
Siguiente iCount
[...]
Gracias de antemano =)