Encontrar un número ingresado desde un ComboBox en una tabla con datos y reemplazar el contenido de la celda adyacente en la tabla

11/04/2007 - 21:50 por Insumos | Informe spam
Hola Gente del Foro:

Tengo el siguiente problemita. Tenga un UserForm con un ComboBox. En la
lista del combobox hay números de registro (por ejemplo 25, 564, 875, etc).
Lo que necesito es que al clickear un CommandButton el código haga lo
siguiente: busque el número elegido en el combobox en una base de datos con
registros que se encuentra en una hoja llamada "Datos" (el número de
registro se encuentra en la columna H) y luego reemplaze en esa fila en la
columna de al lado (la I) la letra que allí se encuentra por la letra "X".
Por ejemplo: en el combobox se selecciona el número 564 y se clickea el
botón. El resultado deseado es: el registro 564 que se encuentra en la hoja
"Datos" tenía en el campo "Condición" (columna I) la letra "P" y ahora
cambiará a tener allí la letra "X".
He intentado con varios códigos usando .Find pero en todos me da error ya
que hay algo que seguramente hago mal pero no tengo el conocimiento para
solucionarlo. También probé con .Replace, pero con el agravante que no se
como explicarle al código que la celda que yo quiero reemplazar no es la que
se encuentra el número de registro (columna H) sino la de al lado (columna
I).
Espero me haya explicado bien.
Desde ya muchas gracias por su atención.

Mariano

CONTADURIA

Preguntas similare

Leer las respuestas

#1 AnSanVal
11/04/2007 - 23:00 | Informe spam
Prueba este código ysi te sirve adaptalo a tu Formulario:
Sub BuscaNum()
Dim fila As Integer
Dim miNum As String
miNum = InputBox("Número a buscar.", "AnSanVal", 565)
If miNum = "" Then Exit Sub
fila = Worksheets(2).Range("H:H").Find(miNum).Row
Cells(fila, 9).Value = "X"
End Sub

Saludos desde Tenerife (España)
*****************************
"Insumos" escribió en el mensaje
news:
Hola Gente del Foro:

Tengo el siguiente problemita. Tenga un UserForm con un ComboBox. En la
lista del combobox hay números de registro (por ejemplo 25, 564, 875,
etc).
Lo que necesito es que al clickear un CommandButton el código haga lo
siguiente: busque el número elegido en el combobox en una base de datos
con
registros que se encuentra en una hoja llamada "Datos" (el número de
registro se encuentra en la columna H) y luego reemplaze en esa fila en la
columna de al lado (la I) la letra que allí se encuentra por la letra "X".
Por ejemplo: en el combobox se selecciona el número 564 y se clickea el
botón. El resultado deseado es: el registro 564 que se encuentra en la
hoja
"Datos" tenía en el campo "Condición" (columna I) la letra "P" y ahora
cambiará a tener allí la letra "X".
He intentado con varios códigos usando .Find pero en todos me da error ya
que hay algo que seguramente hago mal pero no tengo el conocimiento para
solucionarlo. También probé con .Replace, pero con el agravante que no se
como explicarle al código que la celda que yo quiero reemplazar no es la
que
se encuentra el número de registro (columna H) sino la de al lado (columna
I).
Espero me haya explicado bien.
Desde ya muchas gracias por su atención.

Mariano

CONTADURIA


Respuesta Responder a este mensaje
#2 Insumos
12/04/2007 - 01:18 | Informe spam
Hola AnSanVal:

Muchisimas gracias por tu valiosa ayuda. Solucionaste mi problema!!
El código para que funcione en mi planilla quedó así:

Private Sub CommandButton1_Click()

Dim fila As Integer
Dim miNum As String
miNum = ComboBox1
fila = Worksheets("Datos").Range("H:H").Find(miNum).Row
Worksheets("Datos").Cells(fila, 9).Value = "X"

End Sub

Otra vez muchas gracias!! Saludos desde Mar del Plata (Argentina)

Mariano

"AnSanVal" escribió en el mensaje
news:
Prueba este código ysi te sirve adaptalo a tu Formulario:
Sub BuscaNum()
Dim fila As Integer
Dim miNum As String
miNum = InputBox("Número a buscar.", "AnSanVal", 565)
If miNum = "" Then Exit Sub
fila = Worksheets(2).Range("H:H").Find(miNum).Row
Cells(fila, 9).Value = "X"
End Sub

Saludos desde Tenerife (España)
*****************************
"Insumos" escribió en el mensaje
news:
> Hola Gente del Foro:
>
> Tengo el siguiente problemita. Tenga un UserForm con un ComboBox. En la
> lista del combobox hay números de registro (por ejemplo 25, 564, 875,
> etc).
> Lo que necesito es que al clickear un CommandButton el código haga lo
> siguiente: busque el número elegido en el combobox en una base de datos
> con
> registros que se encuentra en una hoja llamada "Datos" (el número de
> registro se encuentra en la columna H) y luego reemplaze en esa fila en


la
> columna de al lado (la I) la letra que allí se encuentra por la letra


"X".
> Por ejemplo: en el combobox se selecciona el número 564 y se clickea el
> botón. El resultado deseado es: el registro 564 que se encuentra en la
> hoja
> "Datos" tenía en el campo "Condición" (columna I) la letra "P" y ahora
> cambiará a tener allí la letra "X".
> He intentado con varios códigos usando .Find pero en todos me da error


ya
> que hay algo que seguramente hago mal pero no tengo el conocimiento para
> solucionarlo. También probé con .Replace, pero con el agravante que no


se
> como explicarle al código que la celda que yo quiero reemplazar no es la
> que
> se encuentra el número de registro (columna H) sino la de al lado


(columna
> I).
> Espero me haya explicado bien.
> Desde ya muchas gracias por su atención.
>
> Mariano
>
> CONTADURIA
>
>


Respuesta Responder a este mensaje
#3 Ivan
12/04/2007 - 01:46 | Informe spam
hola,

prueba a usar esta funcion facilitada (+o-) hace tiempo (creo recordar
que) por Hector Miguel (lo que si es seguro es que el me proporciono
otra via mas rapida usando creo que 'evaluate' y 'Match' pero ahora
mismo no lo recuerdo/hayo)

te devuelve la fila en la que se encuentra el valor buscado->

Function FilaNro(ByVal Nro As Long, ByVal Rango As Range) As Long
On Error Resume Next
With Rango
FilaNro = .Find(Nro, .Cells(1, 1), xlFormulas, xlWhole).Row
End With
End Function

puedes usarla mas o menos (y p. ej) asi ->

sub Cambiar
Dim f as long, ulF as long
with tuHoja
ulF = .[h65536].end(xlup).row
f=filaNro( cLong(tuTextBox), .range("h2:h" & ulF))
if f = 0 then msgbox "No se ha encontrado el valor buscado":
exit sub
.range("i" & f)= lo que tu quieras
end with
end sub

solo (creo) ten en cuenta que los valores/datos en la columna a buscar
sean unicos y que si estas buscando en una colummna con valores
numericos, el textbox te devuelve un String, por lo que has de
convertirlo a valor ( con val, cLong, etc)

tambien puedes consultar Find por si quieres ampliar/cambiar los
argumentos que te he puesto

espero te ayude, y si quieres comentas
un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#4 Insumos
12/04/2007 - 23:34 | Informe spam
Hola Ivan:

Muchas gracias por tu ayuda. Esta solución también funciona, aunque me costó
un poco darme cuenta como hacerlo. Como bien aclaras, los valores a buscar
no pueden repetirse ya que son números de registros únicos (algo así como la
clave de la tabla). Tampoco puede darse el caso de que no exista el valor
buscado, ya que las opciones que depliega el combo son la que cumplen con el
requisito que luego se van a cambiar y se actualiza permanentemente con el
evento Change.
Gracias nuevamente! Saludos!

Mariano


"Ivan" escribió en el mensaje
news:
hola,

prueba a usar esta funcion facilitada (+o-) hace tiempo (creo recordar
que) por Hector Miguel (lo que si es seguro es que el me proporciono
otra via mas rapida usando creo que 'evaluate' y 'Match' pero ahora
mismo no lo recuerdo/hayo)

te devuelve la fila en la que se encuentra el valor buscado->

Function FilaNro(ByVal Nro As Long, ByVal Rango As Range) As Long
On Error Resume Next
With Rango
FilaNro = .Find(Nro, .Cells(1, 1), xlFormulas, xlWhole).Row
End With
End Function

puedes usarla mas o menos (y p. ej) asi ->

sub Cambiar
Dim f as long, ulF as long
with tuHoja
ulF = .[h65536].end(xlup).row
f=filaNro( cLong(tuTextBox), .range("h2:h" & ulF))
if f = 0 then msgbox "No se ha encontrado el valor buscado":
exit sub
.range("i" & f)= lo que tu quieras
end with
end sub

solo (creo) ten en cuenta que los valores/datos en la columna a buscar
sean unicos y que si estas buscando en una colummna con valores
numericos, el textbox te devuelve un String, por lo que has de
convertirlo a valor ( con val, cLong, etc)

tambien puedes consultar Find por si quieres ampliar/cambiar los
argumentos que te he puesto

espero te ayude, y si quieres comentas
un saludo y hasta pronto
Ivan

Respuesta Responder a este mensaje
#5 Ivan
13/04/2007 - 02:45 | Informe spam
hola Mariano,

me alegro que tambien te sirva, y disculpa el despiste TextBox /
ComboBox

un saludo
Ivan

PD: y gracias a ti tambien por el feedback
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida