VBA ENCUENTRA CARACTERES ESPECIALES, NO REPLACE
Resuelto
Ludivine50
Mensajes publicados
118
Estado
Miembro
-
Ludivine50 Mensajes publicados 118 Estado Miembro -
Ludivine50 Mensajes publicados 118 Estado Miembro -
Hola a todos,
Después de una larga búsqueda en los foros, encontré 30 discusiones sobre la función Replace, funciones para reemplazar las ' por '' para hacer funcionar la búsqueda que no funciona, pero no la respuesta a mi pregunta muy simple.
Simplemente me gustaría un código del tipo:
Dim RECHERCHE as string
If RECHERCHE contiene un espacio o un carácter " ' " Then
MsgBox("¡No introduzcas un espacio ni el carácter ' en la zona de búsqueda!")
Else
Ejecuta mi búsqueda
End If
Y mi problema es simplemente que no logro buscar si lo que la persona escribió contiene un ' o un espacio. Desafortunadamente, este pequeño contratiempo provoca pánico!
Con la esperanza de que alguien pueda ayudarme,
Que tengas un buen día
Después de una larga búsqueda en los foros, encontré 30 discusiones sobre la función Replace, funciones para reemplazar las ' por '' para hacer funcionar la búsqueda que no funciona, pero no la respuesta a mi pregunta muy simple.
Simplemente me gustaría un código del tipo:
Dim RECHERCHE as string
If RECHERCHE contiene un espacio o un carácter " ' " Then
MsgBox("¡No introduzcas un espacio ni el carácter ' en la zona de búsqueda!")
Else
Ejecuta mi búsqueda
End If
Y mi problema es simplemente que no logro buscar si lo que la persona escribió contiene un ' o un espacio. Desafortunadamente, este pequeño contratiempo provoca pánico!
Con la esperanza de que alguien pueda ayudarme,
Que tengas un buen día
Configuración: ACCESS 2000 - 2003
4 respuestas
Hola,
prueba esta macro de evento para colocar en el módulo "feuil" correspondiente de VBE
(en este ejemplo A1:C10 representa la zona donde la acción es válida
pero no estoy seguro de que apostrofe sea del género femenino
--
El foro se basa en compartir conocimientos: no respondo así a preguntas técnicas por mensaje privado.
Cordialmente, Michel
prueba esta macro de evento para colocar en el módulo "feuil" correspondiente de VBE
(en este ejemplo A1:C10 representa la zona donde la acción es válida
Private Sub Worksheet_Change(ByVal Target As Range) Dim reg As Object Dim flag As Boolean If Not Intersect(Target, Range("A1:C10")) Is Nothing Then ' instancia Set reg = CreateObject("vbscript.regexp") reg.Pattern = "'"' flag = reg.Test(target) If flag Then MsgBox "una o varias comillas simples han sido ingresadas en la celda" End If End If End Sub pero no estoy seguro de que apostrofe sea del género femenino
--
El foro se basa en compartir conocimientos: no respondo así a preguntas técnicas por mensaje privado.
Cordialmente, Michel
sí, claro, era sobre Excel, mi cosa
target representa la celda activa
Pero las expresiones regulares también funcionan con Access
como no trabajo a menudo con Access, quizá te diga tonterías
tal vez creando una función booleana con como parámetro, tu área de texto, y devolvería False o True
function machin(tonparam)
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "'"
machin = reg.Test(tonparam)
end functon
--
El foro está basado en el intercambio de conocimientos: No respondo a preguntas técnicas por mensaje privado.
Saludos, Michel
target representa la celda activa
Pero las expresiones regulares también funcionan con Access
como no trabajo a menudo con Access, quizá te diga tonterías
tal vez creando una función booleana con como parámetro, tu área de texto, y devolvería False o True
function machin(tonparam)
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "'"
machin = reg.Test(tonparam)
end functon
--
El foro está basado en el intercambio de conocimientos: No respondo a preguntas técnicas por mensaje privado.
Saludos, Michel
Bonjour Michel, merci beaucoup pour ta réponse.
Je viens de tester et cela fonctionne très bien!
J'ai juste un problème: quand j'ouvre mon formulaire de recherche et que je saisie pour la première fois quelquechose dans la zone de texte que l'on va chercher après, il plante.
Pour mieux décrire le pb:
- quelqu'un fait sa recherche et saisie EGLISE -->la recherche fonctionne
- quelqu'un fait une deuxieme recherche et saisie L'EGLISE --> MsgBox("Merci de saisir une expression sans apostrophe")
- quelqu'un fait une troisieme recherche et saisie MAIRIE --> la recherche fonctionne
- fermeture du formulaire de recherche
- réouverture du formulaire de recherche
- saisie dans la zone de texte de n'importe quel caractère (sans cliquer sur le bouton qui lance ma procédure de recherche)-->
Message d'erreur:
ça ne fait cela que à la première saisie, et après cela fonctionne.
Je ne comprends pas pourquoi il garde en mémoire "L'EGLISE", alors que la dernière saisie était "MAIRIE", et pourquoi il continue à bloquer là-dessus.
Qu'en penses-tu?
Je viens de tester et cela fonctionne très bien!
J'ai juste un problème: quand j'ouvre mon formulaire de recherche et que je saisie pour la première fois quelquechose dans la zone de texte que l'on va chercher après, il plante.
Pour mieux décrire le pb:
- quelqu'un fait sa recherche et saisie EGLISE -->la recherche fonctionne
- quelqu'un fait une deuxieme recherche et saisie L'EGLISE --> MsgBox("Merci de saisir une expression sans apostrophe")
- quelqu'un fait une troisieme recherche et saisie MAIRIE --> la recherche fonctionne
- fermeture du formulaire de recherche
- réouverture du formulaire de recherche
- saisie dans la zone de texte de n'importe quel caractère (sans cliquer sur le bouton qui lance ma procédure de recherche)-->
Message d'erreur:
Erreur de syntaxe (opérateur absent) dans l'expression '[num] like '*L'EGLISE*' or [adresse] like '*L'EGLISE*' ....
ça ne fait cela que à la première saisie, et après cela fonctionne.
Je ne comprends pas pourquoi il garde en mémoire "L'EGLISE", alors que la dernière saisie était "MAIRIE", et pourquoi il continue à bloquer là-dessus.
Qu'en penses-tu?
hola,
como te dije, trabajo raramente con Access..
rutas sin garantía:
quizás limpiar la zona si hay error
abandonar el sistema de “función” y pasar a procedimiento de “después de la actualización”
--
El foro se basa en el intercambio de conocimientos: Por lo tanto no respondo a preguntas técnicas por mensaje privado.
Cordialement, Michel
como te dije, trabajo raramente con Access..
rutas sin garantía:
quizás limpiar la zona si hay error
abandonar el sistema de “función” y pasar a procedimiento de “después de la actualización”
--
El foro se basa en el intercambio de conocimientos: Por lo tanto no respondo a preguntas técnicas por mensaje privado.
Cordialement, Michel
Re
En modo creación del formulario-
-selecciona tu control donde pruebas la comilla
-propiedad- evento
marca "después de ACTUALIZAR"
en el botón "tres puntos" selecciona "generador de código"
aquí está el código:(reemplaza "s_mel" (nombre de mi app que verificaba la sintaxis de un correo) por el nombre de tu control
todo eso me ha permitido volver a Adquirir experiencia en Access, ¡de ahí el retraso!
--
El forum se basa en compartir conocimientos: No respondo a preguntas técnicas por mensaje privado.
Cordialmente, Michel
En modo creación del formulario-
-selecciona tu control donde pruebas la comilla
-propiedad- evento
marca "después de ACTUALIZAR"
en el botón "tres puntos" selecciona "generador de código"
aquí está el código:(reemplaza "s_mel" (nombre de mi app que verificaba la sintaxis de un correo) por el nombre de tu control
Private Sub s_mel_AfterUpdate() Dim reg As Object Dim flag As Boolean If [s_mel] > 0 Then Set reg = CreateObject("vbscript.regexp") reg.Pattern = "'" flag = reg.Test([s_mel]) If flag Then MsgBox "una o varias comillas simples han sido ingresadas en la celda" End If End If Set reg = Nothing End Sub todo eso me ha permitido volver a Adquirir experiencia en Access, ¡de ahí el retraso!
--
El forum se basa en compartir conocimientos: No respondo a preguntas técnicas por mensaje privado.
Cordialmente, Michel
¡Caramba! Quería probar esta noche, pero las tablas de mi base de datos están vinculadas a SQL SERVER, y no tengo acceso a la base...
Entonces, probaré el lunes.
Voy a hacerlo un poco diferente, porque hice toda la búsqueda en VB. El formulario está hecho con Access, pero después, es todo VB. Pero voy a lograr arreglármelas, creo.
Te agradezco, te deseo un buen fin de semana y ¡nos vemos el lunes! ;-)
Entonces, probaré el lunes.
Voy a hacerlo un poco diferente, porque hice toda la búsqueda en VB. El formulario está hecho con Access, pero después, es todo VB. Pero voy a lograr arreglármelas, creo.
Te agradezco, te deseo un buen fin de semana y ¡nos vemos el lunes! ;-)
Hola Michel, acabo de probar pero no ha cambiado nada: sigue mostrando un mensaje de error la primera vez que abro el formulario de búsqueda. Por eso, probé recrearlo por completo. Un poco largo, pero creo que no tengo otra solución, parece que el formulario está verrolé. Además, antes no conseguía buscar si había un espacio en la entrada, ¡ahora sí!
Te agradezco tu ayuda, Michel.
Que tengas un buen día
Te agradezco tu ayuda, Michel.
Que tengas un buen día
Trabajo con Access y al parecer VB de Access no reconoce la función Intersect.
Pero no sabía qué hacer con Target, ¿quizá ahí es donde me equivoqué?