excel-vba - que - seleccionar hasta la ultima celda con datos vba
Macro de Excel para imprimir hojas basadas en mĂșltiples valores (1)
Tengo una hoja con una macro que cuando cambio un valor en la celda E5, llena automáticamente ciertos campos en la hoja 1 , busca y devuelve los valores de una tabla en otra hoja - sheetTable ).
Mi objetivo ahora es seleccionar un rango de valores en una columna en sheetTable y asignar cada uno de ellos a la celda E5 en la hoja 1 , e imprimir cada uno.
Entonces digamos que selecciono 3 celdas con valores: 45, 50 y 66. Cuando ejecuto la macro, asignará 45 a la celda E5 e imprimirá la hoja1 , luego asignará 50 a la celda E5 e imprimirá la hoja1 y finalmente asignará 66 a la celda E5 y hoja de impresión1.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim shape As Excel.shape
'' The variable KeyCells contains the cells that will
'' cause an alert when they are changed.
Set KeyCells = Range("e5")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
For Each shape In ActiveSheet.Shapes
shape.Delete
Next
InsertPictureInRange Range("f2").Value & Range("e5").Value & ".jpg", _
Range("c9")
InsertPictureInRange Range("f2").Value & Range("e5").Value & "_1.jpg", _
Range("i9")
If Range("e5").Value = "" Then Exit Sub
End If
End Sub
Lo siguiente se ejecutará a través de una selección y pegará los valores en su celda E5, en Sheet1, y luego abrirá el cuadro de diálogo "PrintToFile". A partir de ahí, deberá ingresar manualmente la ubicación y el nombre del archivo.
Dim Rng As Range
Set Rng = Selection
Dim Sheet1 As Worksheet
Set Sheet1 = Sheets("Sheet1")
For Each Cell In Rng
Sheet1.Range("e5").Value = Cell.Value
Sheet1.PrintOut Copies:=1, printtofile:=True, collate:=True, ignoreprintareas:=False
Next Cell
Esto te lleva a la mitad, al menos. Quizás alguien con más experiencia que yo pueda agregar cómo se puede ingresar la ubicación y el nombre del archivo usando VBA.