Obtener dirección completa de rango en inputbox

Quisiera pode optener la dirección completa de un rango obtenido por inputbox ejemplo:

Sub test()
Dim wb As Workbook
Dim saveFile As String
Dim WorkRng As Range
Dim address As String
Dim defult As Integer
Dim myString As String
'myString = Selection.Address
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", WorkRng.address, Type:=8)
'¿MsgBox WorkRng.address
ActiveSheet.Range("a2").Value = WorkRng.address
end sub

si lo pongo de esa manera, solo obtengo el rango, pero no asi el nombre de libro ni de hoja.

Con el objetivo tal vez de poder reemplazar los valores necesarios para utilizar "buscarv" con hojas especificas y rangos específicos.

Sub busquedaVertical()
Dim cont As Long
Dim ultLinea As Long
Dim sueldo As Variant
Dim codigo As Variant
Dim rango As Variant
ultLinea = Sheets("hoja1").Range("C" & Rows.Count).End(xlUp).Row
Set rango = Sheets("hoja2").Range("D7:E9")
For cont = 8 To ultLinea
codigo = Sheets("hoja1").Cells(cont, 3)
sueldo = Application.VLookup(codigo, rango, 2, False)
If IsError(sueldo) Then
sueldo = x
End If
Sheets("hoja1").Cells(cont, 4) = sueldo
Next cont
MsgBox "Buscarv con macro ejecutada exitosamente!", vbInformation, "BuscarV"
End Sub

2 respuestas

Respuesta
4

Revisa el siguiente ejemplo:

Sub ObtenerDatos()
  Dim rango As Range
  Dim celda As String, hoja As String, libro As String
  '
  With Application
    On Error Resume Next
    Set rango = .InputBox("Selecciona Rango", Type:=8)
    If rango Is Nothing Then Exit Sub
    On Error GoTo 0
  End With
  '
  'En las siguientes variables almacenas la celda, la hoja y el libro del rango seleccionado.
  celda = rango.Address
  hoja = rango.Worksheet.Name
  libro = rango.Worksheet.Parent.Name
  '
  '
End Sub

Comenta si tienes dudas.

Respuesta
3

Estabas bastante cerca. Te dejo una macro con el InputBox que te devuelve los 2 campos:

Sub solicitaRango()
'x Elsamatilde
Dim rango As Range, libro As String
Dim miLibro As Workbook, miHoja As Worksheet
Set miLibro = ActiveWorkbook
Set miHoja = miLibro.Sheets("Hoja3")  'hoja donde guardar la referencia
'controlamos posibles errores
On Error Resume Next
Set rango = Application.InputBox("Seleccione una celda o rango", Type:=8)
'si el rango no está vacío lo seleccionamos
If Not rango Is Nothing Then
    'guardamos nombre del libro y el rango seleccionado
    libro = ActiveWorkbook.Name
    dire = rango.Address(False, False)
    miHoja.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = libro
    miHoja.Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = dire
End If
'se devuelve el control de errores a su estado normal
On Error GoTo 0
'regresa al libro/hoja de trabajo
miLibro.Activate
miHoja.Select
End Sub

En este ejemplo se está guardando la información en col A:B de una hoja llamada 'Hoja3'. Ajustá estas instrucciones a tu necesidad.

NOTA: Macro adaptada de mi Manual de Userforms, cap 3:

Sdos y no olvides valorar esta respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas