Saltar al contenido

Macro para buscar y reemplazar texto


Recommended Posts

Hola Comunidad de AyudaExcel,

Tengo una duda con respecto a Macros VBA ya que soy bastante nuevo en esto, estoy creando una macro donde se haga registro de usuarios de X empresa y luego por medio de un ID y con ese ID me busque o me arroje como resultando N cantidades de usuarios y se muestre en un combobox, y en cada textbox me muestre los datos del usuario pero resulta que dentro de cada textbox digamos quiero reemplazar el texto "NombreAntiguo" por "NombreNuevo" por asi decirlo chancarlo en mis terminos, como tendria que realizarlo.

He creado 2 botones "Modificar" y "Actualizar" mi duda esta en el boton de "Actualizar".

Espero su apoyo para poder comprender y entenderlo.

Saludos

Enlace a comentario
Compartir con otras webs

Disculpa, por no colocar mi codigo para que me puedan dar la idea.

Private Sub CommandButton3_Click() 'Boton Actualizar Datos
    Sheets("Data").Activate
        If TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
            MsgBox "Está dejando campos requeridos vacios favor complete", vbInformation
            TextBox5.SetFocus
        Else
            ActiveCell.Offset(0, 4) = TextBox5.Value 'Nombre y Apellidos
            ActiveCell.Offset(0, 7) = TextBox6.Value 'Usuario
            ActiveCell.Offset(0, 8) = TextBox7.Value 'Contraseña
            ActiveCell.Offset(0, 9) = TextBox8.Value 'Email
                MsgBox "Datos actualizados correctamente", vbInformation, "Almacen"
            TextBox5.Locked = True
            TextBox6.Locked = True
            TextBox7.Locked = True
            TextBox8.Locked = True
        End If
End Sub

Mi boton modificar "CommandButton3_Click()" es donde se realizara el evento de actualizar los datos de X proveedor donde dentro del codigo detallo que campo es cada TextBox.

El error es que no me chanca o reemplaza el texto o mejor dicho no se actualiza los datos en las celdas correctamente.

Enlace a comentario
Compartir con otras webs

Hola @NelsonOR!!!

El código funciona correctamente. Puede pasar que (en la ejecución del código) tengas seleccionada otra celda y no la celda dónde tú deseas insertar los datos.

Cito tu código original, pero referenciando las posiciones dónde deseas insertar los datos.

Private Sub CommandButton3_Click() 'Boton Actualizar Datos
Sheets("Data").Activate
If TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
    MsgBox "Está dejando campos requeridos vacios favor complete", vbInformation
    TextBox5.SetFocus
Else
    Sheets("Data").Range("A1").Offset(0, 4) = TextBox5.Value 'Nombre y Apellidos
    Sheets("Data").Range("A1").Offset(0, 7) = TextBox6.Value 'Usuario
    Sheets("Data").Range("A1").Offset(0, 8) = TextBox7.Value 'Contraseña
    Sheets("Data").Range("A1").Offset(0, 9) = TextBox8.Value 'Email
    MsgBox "Datos actualizados correctamente", vbInformation, "Almacen"
End If
End Sub

Reemplaza "A1" por la celda o variable que necesites, ejemplo: Range("D15") o Range("A" & fila).Offset(0,4) = TextBox1.Value

Por favor, prueba y comenta.

Suerte!

 

Enlace a comentario
Compartir con otras webs

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que hay que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
    • Sub RecorrerRangoC() Set hoja = ActiveSheet Set rango = hoja.Range("C2:C" & hoja.Cells(hoja.Rows.Count, "C").End(xlUp).Row) If rango.Cells.Count = 0 Then MsgBox "No hay datos en la columna C.", vbExclamation Exit Sub End If For Each celda In rango.SpecialCells(xlCellTypeVisible) celda.Select Application.Wait Now + TimeValue("00:00:01") Next celda End Sub Prueba y comenta
    • Gracias   Al final funciona con esta formula. =SI.ERROR(C5*BUSCARV(A$2;TablaReparto[#Todo];COINCIDIR(D5;TablaReparto[#Encabezados];));C5) En la celda C5 he puesto la OT. Es similar a lo que me das como solución. ¡Muchas gracias por la ayuda!  
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.