Buscar dato y borrar celda derecha

Columna A Columna B
Materiales Sección
Cemento Cemento
Clavo de 2" Clavos
Pilares Cemento
Cemento Cemento
Clavos de 2" Clavos
Necesito cambiar la sección del Material por la que yo escoja o escriba, para eso tengo un formulario que diseñe de prueba con un ComboBox1 y un TextBox1 y un botón:
Tengo 3 Hojas, en la Hoja 1 tengo esto A1= textbox1 y combox1 = A2
y en la hoja 2 y 3, tengo las misma base datos copiada
lo que hace es que selecciono un palabra del combobox1 que es la sección del material supongamos cemento y que reemplace por la palabra que esta en el textbox1 que se llama por ejemplo Genial, la macro que ocupo me cambia todas las palabra cemento por genial y lo que quiero es que busque en la columna A el material y después en la columna B a su derecha haga el reemplazo de la palabra que yo quiera, no que haga el reemplazo en toda la columna. Acá va el código:
Private Sub CommandButton1_Click()
Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = TextBox1.Text
Sheets("Sheet1").Select
Range("A2").Select
ActiveCell.FormulaR1C1 = ComboBox1.Text
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Dim w, w1, w2 As Worksheet
Dim celda As Range
Set w = Sheet1
Set w1 = Sheet2
Set w2 = Sheet3
x = 0
For Each celda In w1.Range("B2:B100")
If celda.Value = w.Range("A2").Value Then
celda.Value = w.Range("A1").Value
x = x + 1
End If
Next celda
If x = 0 Then
Close
End If
For Each celda In w2.Range("B2:B100")
If celda.Value = w.Range("A2").Value Then
celda.Value = w.Range("A1").Value
x = x + 1
End If
Next celda
If x = 0 Then
MsgBox "No se encontraron coincidencias"
End If
Loop
End Sub
De antemano muchas gracias:
http://rapidshare.com/files/201243638/REEMPLAZA_Y_BUSCA2.xls.html
aqui esta el archivo de descarga. Nota : la hoja 1 aca se llama Maxi hoja2 Datos, y hoja 3 Bkn

1 respuesta

Respuesta
1
¿Cuál es la clave del archivo a descargar?
Amigo el archivo no tiene contraseña y funciona perfecto, descargar, abrir y listo
Bueno realmente estaba bien el archivo la pero la primera ves que lo descargue al abrirlo me pidió clave (no tengo idea porque), pero ya estuve viendo lo que querías y te tengo una solución que es mucho más simple (resulta que tu código reemplaza todos inculo los títulos), te doy lo que hice para solucionar el problema:
Primero declaramos una variable global que se encargara de guardar el numero del item seleccionado
Dim Seleccion As Long
Luego en el evento click del combo se le entrega a la variable 'Seleccion' el numero del item seleccionado sumado a 2 para que empiece después del titulo de la columna.
Private Sub ComboBox1_Click()
Seleccion = ComboBox1.ListIndex + 2
End Sub
' Este ya lo tenias (no lo modifique).
Private Sub ComboBox1_Enter()
UserForm1.ComboBox1.RowSource = "Datos!A2:A50"
End Sub
Luego en el evento click del botón colocamos el código para reemplazar la columna sección.
Acá lo que se hace es tomar el valor de la variable Selección para dar el numero de celda a modificar en la columna B (y se ele entrega el texto del TextBox). El código que estaba en este evento del botón no lo use para el proceso ya que no era necesario.
Private Sub CommandButton1_Click()
Sheet2.Cells(Seleccion, "B") = TextBox1.Text
End Sub
Espero te sea de ayuda.
Cualquier duda me dices.
Bye.
Amigo no me sirvió, lo siento,
me hace el cambio una vez, pero lo que necesito es que lo haga la cantidad de veces necesaria que este en la base de datos ejemplo:
Nombre Material Sección
Cemento Cemento
Pilares Cemento
Pilares Cemento
Clavos de 2" Clavos
Cemento Cemento
Supongamos que lo que yo quiero es esto: Seleccione el Material cemento y me va decir que esta en la sección cemento, si cambio la sección cemento por CHUMINGO, cambie solo donde están las palabras cemento:
Nombre Material Sección
Cemento CHUMINGO
Pilares Cemento
Pilares Cemento
Clavos de 2" Clavos
¿Cemento CHUMINGO
ME EXPLICO? Lo que tu hiciste esta bien pero solo me lo cambia una vez, lo que quiero es lo mismo pero que se repita varias veces en las dos hojas bases de datos que tengo. A lo mejor necesito 2 combobox y un textbox en el formulario. Un combobox donde seleccione la palabra o sección antigua, otro combobox donde seleccione el material y un textbox para ingresar la palabra nueva que quiero. Gracias.
Para eso debemos hacer lo siguiente:
Declaramos variables globales.
Dim arr(9999) As String ' Un arreglo que guardara los indices del ComboBox
Dim cont As Long
Dim i As Long
Dim Pos As Long ' Pos nos da el indice en el que se guardara el numero en el arreglo
Private Sub ComboBox1_Click()
Dim Texto As String
cont = 0
Pos = 0
Texto = ComboBox1.Text ' Le damos el texto seleccionado a la variable Texto
For i = 0 To ComboBox1.ListCount - 1
    If ComboBox1.List(i) = Texto Then ' Preguntamos si el combo tiene mas palabras iguales
       cont = i
       arr(Pos) = CStr(i + 2) ' Guardamos el indice sumandole 2
       Pos = Pos + 1
    End If
Next
End Sub
' Y para el boton debes hacer el siguiente cambio:
For i = 1 To cont
    If Not arr(i) = "" Then
       Sheet2.Cells(CLng(arr(i)), "B") = TextBox1.Text
       Sheet3.Cells(CLng(arr(i)), "B") = TextBox1.Text
    End If
Next
COMPADRE gracias, lo probé funciona pero falta una pequeña cosa, selecciono la palabra, coloco en el textbox1 la palabra que quiero y me cambia efectivamente las quería pero las primeras registradas no ejemplo:
Elijo cemento cambiar por Maxofon y hace esto:
Materiales sección
Cemento cemento
Pilares cemento
Clavos de 2" clavos
Cemento Maxofon
Pilares cemento
Cemento Maxofon
¿Me explico?
Como que el código no lo cambia la primera vez que lo encuentra si no que lo deja ahí y cambia los repetidos. Disculpa por molestarte en esto pero es super importante para mi. Gracias otra vez.
Si efectivamente:
Este for :
For i = 1 To cont
    If Not arr(i) = "" Then
       Sheet2.Cells(CLng(arr(i)), "B") = TextBox1.Text
       Sheet3.Cells(CLng(arr(i)), "B") = TextBox1.Text
    End If
Next
Cambialo a:
For i = 0 To cont  ' Se le cambio el i =1 a i = 0
    If Not arr(i) = "" Then
       Sheet2.Cells(CLng(arr(i)), "B") = TextBox1.Text
       Sheet3.Cells(CLng(arr(i)), "B") = TextBox1.Text
    End If 
Next
Y no te preocupes que estamos para ayudar.
Bye.
Compadre eres sequisimo, de verdad muchas muchas gracias, en un principio pensé que nadie me lo iva a solucionar, de verdad si que eres un Experto y te agrego a mi experto preferido. Un Abrazo y gracias por todo, lo más probable es que te haga otra pregunta después. Maxofon

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas