¿Cómo puedo obtener el nº de fila en función del contenido de la c

24/06/2009 - 12:28 por José-Luis | Informe spam
Hola a todos
Quería saber si se puede obtener el nº de fila a partir del contenido de la
celda, si este a su vez lo puedo localizar con un IF (u otro método mejor)
que haga la comparación correspondiente para encontrar dicha celda.
Más o menos sería (lógicamente está mal pues no funciona o no logro hacerlo
funcionar)

'Rellena el combo 4
'Antes he llegado a la hoja adecuada por medio del combo 3

Private Sub Combobox3_Change()

ComboBox4.Clear

'Seleccionamos la fila correspondiente

Do While Not IsEmpty(ActiveCell)

If Left(ActiveCell.Value, 4) =
Left(ComboBox3.List(ComboBox3.ListIndex), 4) Then

Fila = ¿? 'Esto es lo que quiero saber y si la estructura está bien
o la tengo que cambiar

Cells(Fila, 2).Select

'vamos a llenar dinámicamente el combobox
'dependiendo de lo elegido
'Hasta que no encuentre una columna vacía
'que llene todo con datos
ComboBox4.AddItem ActiveCell.Value
End If
'saltamos columnna
ActiveCell.Offset(0, 1).Select
Loop

End Sub

Si hay un método mejor (que seguro lo habrá) me gustaría que me lo
comentarais.
Gracias de antemano por vuestra atención.
José-Luis

Preguntas similare

Leer las respuestas

#11 Juan M
25/06/2009 - 22:30 | Informe spam
Hola José Luis,

He tenido un lapsus, no cambié el nombre del combo en mis pruebas que tenía
el nombre de combobox1 y al intentar dejar el código para que lo pudieras
emplear directamente me deje el identificador sin cambiar.
resistiré a duras penas, pero me han prohibido llevar el ordenador de
vacaciones. Lo cambiaré por la playa y el sol.

Un saludo,
Juan

"José-Luis" escribió
Hola Juan

Con el cambio que me sugieres tampoco va (o no soy capaz de hacerlo ir).
Me
he puesto a "probar" (qué fuerza y valor nos da el desconocimiento!) y me
va
con

Set c = Range("A1",
Range("A1").End(xlDown)).Find(Me.ComboBox3.List(Me.ComboBox3.ListIndex),
LookIn:=xlValues, lookat:=xlPart)

donde le he "quitado" el primer Range después del "=" y he cambiado el 1
por
el 3 donde ponías Me.Combobox1.ListIndex
Supongo que habrá sido pura SUERTE.
Muchas gracias por tu ayuda.
José-Luis
P.D.: ¿Vas a poder resistir unos días sin Internet? je,je,je.

"Juan M" wrote:


Hola José Luis,

en el procedimiento
> Private Sub ComboBox3_Change()

la linea
> Set c = Range("A1",
> Range("A1").End(xlDown)).Find(Me.ComboBox3.List(Me.ComboBox1.ListIndex),
> LookIn:=xlValues, lookat:=xlPart)

está equivocada, debes cambiarla por esta otra
Set c = Range(Range("A1", _

Range("A1").End(xlDown)).Find(Me.ComboBox3.List(Me.ComboBox1.ListIndex),
LookIn:=xlValues, lookat:=xlPart)

En principio al seleccionar previamente la hoja de la que vas a extraer
los
datos no deberías tener problemas para cargar los datos en los combo.

Un saludo,
Juan

PD. Voy a estar unos días sin conexión a internet, si ves te urge mucho
intenta volver a poner la consulta o espera a ver si alguien le da
seguimiento a hilo.

"José-Luis" escribió
> Hola Juan
> este es el código que utilizo para el combo 3 y el 4 ya modificado con
> lo
> que me has mandado anteriormente (no me funciona como debiera, por lo
> que
> algo he hecho mal)
> Comentarte que (el mio) es primitivo porque no se mucho de esto. (Casi
> mejor
> decir que se más bien poco)
>
> 'Rellena el combo 3 (Este a su vez proviene del 2 y el 2 del 1)
>
> Private Sub Combobox2_Change()
>
> ComboBox3.Clear
>
> 'Al inciar el formulario,
>
> 'seleccionamos la hoja con los datos del grupo elegido
>
> Dim I_n As String 'I_n = Inicial naturalezas
> Dim Familia As String 'Familia = Familia
>
> I_n = Left(ComboBox2.List(ComboBox2.ListIndex), 1)
>
> 'I_n, que es un string, sería igual a: la primera letra
>
> If I_n = "A" Then Worksheets("Hoja2").Select
>
> If I_n = "B" Then Worksheets("Hoja3").Select
>
> If I_n = "C" Then Worksheets("Hoja4").Select
>
> If I_n = "D" Then Worksheets("Hoja5").Select
>
> If I_n = "E" Then Worksheets("Hoja6").Select
>
> If I_n = "F" Then Worksheets("Hoja7").Select
>
> If I_n = "G" Then Worksheets("Hoja8").Select
>
> If I_n = "H" Then Worksheets("Hoja9").Select
>
> If I_n = "I" Then Worksheets("Hoja10").Select
>
> 'Seleccionamos la celda que toca según la elección en el combo 2
>
> Familia_elegida = ComboBox2.List(ComboBox2.ListIndex)
>
> Fila = 1
>
> Cells(Fila, 1).Select
>
> Do While Not IsEmpty(ActiveCell)
>
> If Left(ActiveCell.Value, 3) =
> Left(ComboBox2.List(ComboBox2.ListIndex),
> 3)
> Then
>
> 'añadimos el dato
>
> ComboBox3.AddItem ActiveCell.Value
>
> End If
>
> 'bajamos una fila
>
> ActiveCell.Offset(1, 0).Select
> Loop
>
> End Sub
>
> 'Rellena el combo 4
>
> Private Sub ComboBox3_Change()
> Dim c As Range
> Dim celda As Range
> Me.ComboBox4.Clear
>
> Set c = Range("A1",
> Range("A1").End(xlDown)).Find(Me.ComboBox3.List(Me.ComboBox1.ListIndex),
> LookIn:=xlValues, lookat:=xlPart)
>
> For Each celda In Range(Range("B" & c.Row), Range("B" &
> c.Row).End(xlToRight))
> Me.ComboBox4.AddItem celda.Value
> Next celda
> End Sub
>
> Gracias
> José-Luis
>

Respuesta Responder a este mensaje
#12 enrique ramirez
30/06/2009 - 16:12 | Informe spam
saludos
"Juan M" escribió en el mensaje
news:%

"José-Luis" escribió
Hola a todos
Quería saber si se puede obtener el nº de fila a partir del contenido de
la
celda, si este a su vez lo puedo localizar con un IF (u otro método
mejor)
que haga la comparación correspondiente para encontrar dicha celda.
Más o menos sería (lógicamente está mal pues no funciona o no logro
hacerlo
funcionar)

'Rellena el combo 4
'Antes he llegado a la hoja adecuada por medio del combo 3

Private Sub Combobox3_Change()

ComboBox4.Clear

'Seleccionamos la fila correspondiente

Do While Not IsEmpty(ActiveCell)

If Left(ActiveCell.Value, 4) >> Left(ComboBox3.List(ComboBox3.ListIndex), 4) Then

Fila = ¿? 'Esto es lo que quiero saber y si la estructura está
bien
o la tengo que cambiar

Cells(Fila, 2).Select

'vamos a llenar dinámicamente el combobox
'dependiendo de lo elegido
'Hasta que no encuentre una columna vacía
'que llene todo con datos
ComboBox4.AddItem ActiveCell.Value
End If
'saltamos columnna
ActiveCell.Offset(0, 1).Select
Loop

End Sub

Si hay un método mejor (que seguro lo habrá) me gustaría que me lo
comentarais.
Gracias de antemano por vuestra atención.
José-Luis



Hola José Luis,

Sin saber que es lo que pretendes hacer, para encontrar un valor en un
listado puedes emplear el método find del objeto range.

Como no tienes definido un rango en el código expuesto he improvisado una
lista en el rango C5:C12
El valor a buscar lo he puesto en A1 y el resultado se muestra en un
mensaje.
Al no conocer el motivo del empleo del left, ni que es lo que buscas y
comparas te dejo un ejemplo un poco genérico.

Comentas más detalles?

Un saludo,
Juan


Sub BuscaDato()

Dim c As Range
Set c = Range("C5:C12").Find(Range("a1"), LookIn:=xlValues,
lookat:=xlWhole)
Debug.Print c.Row
Set c = Nothing

End Sub



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida