Detectar Celdas Seleccionadas

Necesito saber a través de una macro que celdas están seleccionadas por el usuario, ya que de un archivo txt bajare la información a dichas celdas seleccionadas, ¿cómo detecto las celdas seleccionadas?

2 respuestas

Respuesta
1
La manera de hacer mención a las celdas seleccionadas es utilizando la palabra Selection.
Por ejemplo:
Dim direccion as string
Direccion = Selection.address , esto te devolverá algo como $A$2:$E$10
Si fuese un rango discontinuo el que esté seleccionado, te devolverá:
$A$5,$B$3,$C$10
Si fuese 1 celda podes usar:
direccion = ActiveCell.Address(False, False) en esa variable se guardará la dirección de la celda seleccionada. Aquí al agregar false,false la dirección será relativa, por ejemplo: A8 (esto también se puede aplicar a los ejemplos anteriores)
¿Pero cómo hago el ciclo para que los datos del archivo solo se escriban en las celdas seleccionadas?
Es decir intento hacer un ciclo para leer el archivo e ir recuperando dato por dato, y cada dato ponerlo en una celda seleccionada, por decir el primer dato ponerlo en la primera celda seleccionada, el segundo dato el la celda que sigue a la primera y así sucesivamente.
Gracias de antemano
Gracias Elsa, me fue de mucha utilidad tus ayuda
No se interpretaba eso en tu consulta, ¿solo necesitabas? ¿Saber a través de una macro que celdas están seleccionadas por el usuario?.
Esta rutina que te adjunto la obtuve con la grabadora de macros. Por más que seleccione un rango siempre copia el contenido del txt a partir de la primer celda seleccionada.
Si lo haces manualmente verás que no se puede importar datos en celdas no adyacentes.
Entonces seleccionando una celda, al llamar a la macro pegará los datos a partir de esa ubicación.
Desde FieldNames, el resto de las instrucciones son todas las opciones del asistente al momento de Importar Datos (menú Datos, Datos Externos). Te recomiendo que primero grabes todos los pasos con la grabadora de macros para que ajustes las instrucciones desde FieldNames hasta REfresh con tus opciones. Hay otros comentarios en la macro.
Saludos y no olvides finalizar la consulta, si el tema quedó solucionado.
Sub Macro2()
'
' Macro grabada el 07/07/2004 por Elsa
'luego de TEXT; debes colocar la ruta completa incluyendo al nombre del documento
'veras que el destino es Selection
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\All Users\Documentos\Ejercicios\juancito.txt", _
Destination:=Selection)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
'el Array contempla el nro máximo de columnas
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Respuesta
1
La celda tiene una propiedad que se llama address, en el código de la macro invocas: ActiveCell. Address y el te retorna una cadena con la dirección de la celda. Ahora, si se trata de un rango seleccionado, en vez de ActiveCell utilizas Selection. Address.
Prueba, revisa las cadenas que salen luego de invocar estos métodos y procesas para eliminar lo que no te sirve.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas