Referencia a celdas

En una macro de excel quiero obtener el número absoluto de una celda en el formato cells(x) ejemplo cells(1), cells(100), etc.
Como en desarrollo de la macro la aplicación se ha ido a un sitio (celda) para mí desconocido, necesito saber en ese formato (un solo número) cual celda está activa.
LO he intentado con index, item, address en sus diferetnes formatos y no lo consigo. Se me ocurre que con la fórmula ((número de fila-1 *256)+numero de columna) lo podría obtener, pero resulta que la aplicación tampoco me devuelve el número de fila o de columna cuando estos son par mí desconocidos.
Pregunta: ¿HAy alguna instrucción, medoto, fórmula, que resuelva esta situación?.
P.D.: Mi salud mental depende de sus respuestas, maestro :-(

1 respuesta

Respuesta
1
Como casi siempre dijo, cada quien tiene sus necesidades, pero no logre encontrar una razón para necesitar el numero de la celda, si no te incomoda me gustaría saber para que lo usas, pero vamos a la respuesta, prueba la siguiente macro...
Public Sub Celdas()
'Activamos el numero de celda para A1, A2 y A3 respectivamente
Cells(1). Activate
MsgBox ((ActiveCell.Row - 1) * 256) + ActiveCell.Column
Cells(257).Activate
MsgBox ((ActiveCell.Row - 1) * 256) + ActiveCell.Column
Cells(513).Activate
MsgBox ((ActiveCell.Row - 1) * 256) + ActiveCell.Column
'O sea que si funciona el numero absoluto
Cells(16777216). Activate
End Sub
Como vez, si es posible establecer o hacer referencia a la celda por su intentar desde la 1 y hasta la 16,777,216 pero que yo sepa, no hay una propiedad que te devuelva este valor, pero como observaste la fórmula que quieres usar es correcta salvo por un detalle, un par de paréntesis que te faltaron, recuerda que hay un tema que se llama prioridad de los operadores, primero se tiene que hacer la resta y después la multiplicación, pero con esta formulita obtienes lo que quieres, aunque aun no me imagino algo que no se pueda hacer con las propiedades
Address
Row
Column
Que te devuelven información del rango, saludos...
Mauricio Baeza
[email protected]
Todo lo que no es dado es perdido
*==========================================*
La presente respuesta ha demandado un tiempo de lectura,
análisis, elaboración y redacción. A cambio, simplemente,
pretendo que te tomes un minuto para FINALIZARLA, si
hubiera satisfecho -en alguna medida- tu requerimiento.
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.
Maestro Valedor:
EStoy muy agradecido con su respuesta, desde hoy es usted mi experto favorito.
Como dijo el Buda, en toda pregunta bien formulada está la respuesta.
Solicito su indulgencia por los paréntesis que omití; creo que inconscientemente los guardé para este emoticón :-) que le dedico con todo respeto y admiración; también escribí medoto por método y otros cuantos errores de ortografía. Ya le hablé de mi salud mental agravada por la inconsecuencia de excel de no tener una propiedad que me permita saber a dónde se ha ido. Es como si ordenáramos a un robot : vé a tal sitio y lo hace; pero cuando le preguntamos ¿dónde estás? Nos respondiera con desparpajo ! Ni idea!.-
Respecto de para qué quiero usar esa propiedad, aún desconocida, solo puedo decirle por ahora que es un capricho que puede derivar en una interesante aplicación.
Le envió el siguiente código para que vea usted que he aprovechado la lección
Dim hoja, folio, fila, columna, dir, dirabs As Long
Dim hdirabs As String
hoja = (ActiveWorkbook.ActiveSheet.Index - 1)
folio = hoja * 16777216
fila = ActiveCell.Row
columna = ActiveCell.Column
dir = ((fila - 1) * 256) + columna
dirabs = dir + folio
hdirabs = "H" & Hex(dirabs)
ActiveCell.Value = dirabs
ActiveWorkbook.Names.Add Name:=hdirabs,_ RefersTo:=ActiveCell
.....
Application.Goto [H4000000]
Agradecido y emocionado discípulo:
Tomas Jordan

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas