Se puede definir la celda activa de acuerdo a lo que indique una celda?

Quisiera saber como definir la celda activa de una hoja si la referencia para que lo sea se encuentra en O1.

3 Respuestas

Respuesta
1
Respuesta
1

Si en la celda O1 tienes por ejemplo: "B3"

Entonces puedes seleccionar la celda B3 así:

Sub prueba1()
  Range([O1]).Select
End Sub

Cuál es la finalidad de lo que necesitas?

Dante, muy buenas tardes. Todo empezó queriendo hacer click derecho sobre una fila en un listbox y ahí desde un menú elegir una u otra macro para ejecutar. El asunto es que si hay un filtro en el el listbox y se elige el segundo resultado del filtro mi secuencia toma la segunda fila de la base de datos, cosa que a veces no es cierta. 

Mi idea era decirle a la secuencia desde mis posibilidades es que tome la celda activa cómo referencia. Espero haber sido claro.

La secuencia del botón derecho es: 

Private Sub Listbox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Idx As Long
If Button = 2 Then
    Idx = ListBox1.TopIndex + Int(Y / (ListBox1.Font.Size * 1.2) - 1)
    ListBox1.ListIndex = Idx
    Cells(Idx + 1, 1).Select
    Run "ClickDerecho"
End If
End Su

Como bien comentas, cuando cargas datos filtrados en el listbox, las filas de la hoja no coinciden con la fila del listbox:

Cells(Idx + 1, 1).Select

Para solucionar esto, te presento 2 alternativas:

1. Si existe un campo llave en tu base de datos, entonces tomas el dato llave del listbox y lo buscas en la base de datos para obtener el número de fila.

2. Si no tienes una llave, entonces al momento de cargar los datos filtrados al listbox, en una columna adicional agregas el número de fila. Entonces para saber el número de fila del registro seleccionado en el listbox, lees el valor del registro seleccionado y la columna "adicional" .

Dante, el valor de la celda O1 es la primer celda de la fila que me gustaría ejecutar mi macro. Cómo introduzco ese valor, $A$6 por ejemplo, en la secuencia?

Saludos.

Lo que no entiendo es para qué tienes estos cálculos:

Idx = ListBox1.TopIndex + Int(Y / (ListBox1.Font.Size * 1.2) - 1)
ListBox1.ListIndex = Idx
Cells(Idx + 1, 1).Select

Pues como ya puse el ejemplo, si en la celda O1 tienes $A$6 entonces.

Private Sub Listbox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Idx As Long
If Button = 2 Then
    Idx = ListBox1.TopIndex + Int(Y / (ListBox1.Font.Size * 1.2) - 1)
    ListBox1.ListIndex = Idx
    range([O1]).Select
    Run "ClickDerecho"
End If
End Su
Respuesta
1

No tengo claro lo que necesita. Lo qué comenta: "¿si la referencia para que lo sea se encuentra en O1" Esto se refiere a la posición de la celda activa o al valor de la celda?, Si pude explicar un poco más detalle y si puede subir una imagen a manera de ejemplo sera más fácil ayudarle.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas