valor - seleccionar hoja excel vba
¿Cómo se selecciona toda la hoja de Excel con Rango usando Macro en VBA? (8)
Encontré una solución similar a esta pregunta en c # ... Ver enlace a continuación
Cómo seleccionar todas las celdas en una hoja de cálculo en Excel.Rango objeto de c #?
¿Alguien tiene un fragmento para hacer esto en VBA? No estoy muy familiarizado con VBA, así que esto sería útil. Esto es lo que tengo hasta ahora ...
Selecciono datos normalmente usando "ctrl + shift over arrow, down arrow" para seleccionar un rango completo de celdas. Cuando ejecuto esto en una macro codifica A1: Q398247930, por ejemplo. Necesito que sea solo
.SetRange Range("A1:whenever I run out of rows and columns")
Esto es muy simple, y podría hacerlo fácilmente sin una macro, pero estoy tratando de hacer que todo el proceso sea una macro, y esto es solo una parte.
Sub sort()
''sort Macro
Range("B2").Select
ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Master").sort
.SetRange Range("A1:whenever I run out of rows and columns")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
editar: hay otras partes en las que podría querer usar el mismo código pero el rango es "C3: Fin de filas y columnas". ¿Hay alguna forma en VBA de obtener la ubicación de la última celda del documento?
¡Gracias!
Creo que desea encontrar la región actual de A1 y las celdas circundantes, no necesariamente todas las celdas de la hoja. Si es así, simplemente use ... Range ("A1"). CurrentRegion
Simplemente puede usar cells.select
para seleccionar todas las celdas en la hoja de cálculo. Puede obtener una dirección válida diciendo Range(Cells.Address)
.
Si quiere encontrar el último Used Range
donde ha realizado algún cambio de formato o ha ingresado un valor, puede llamar a ActiveSheet.UsedRange
y seleccionarlo desde allí. Espero que ayude
Quizás esto podría funcionar:
Sh.Range ("A1", Sh.Range ("A" y Rows.Count) .End (xlUp))
puedes usar todas las celdas como un objeto como este:
Dim x as Range
Set x = Worksheets("Sheet name").Cells
X ahora es un objeto de rango que contiene toda la hoja de trabajo
Refiriéndome a la primera pregunta, estoy investigando lo mismo. El resultado que obtengo al grabar una macro es comenzar seleccionando la celda A76:
Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
Sub SelectAllCellsInSheet(SheetName As String)
lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column
Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row
Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select
End Sub
Para usar con ActiveSheet:
Call SelectAllCellsInSheet(ActiveSheet.Name)
Yo recomendaría grabar una macro, como se encuentra en esta publicación;
Excel VBA macro para filtrar registros
Pero si está buscando encontrar el final de sus datos y no el final del libro de trabajo necesario, si no hay celdas vacías entre el principio y el final de sus datos, a menudo uso algo como esto;
R = 1
Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1))
R = R + 1
Loop
Range("A5:A" & R).Select ''This will give you a specific selection
Le quedan R = al número de la fila después de que finalice su información. Esto podría usarse también para la columna, y luego podría usar algo como Células (C, R). Seleccione, si hizo C la representación de la columna.
tienes algunas opciones aquí:
- Usar la propiedad UsedRange
- encontrar la última fila y columna utilizada
- usa una mímica de cambio hacia abajo y cambia a la derecha
Yo personalmente uso el rango usado y encuentro la última fila y el método de columna la mayor parte del tiempo.
Así es cómo lo haría usando la propiedad UsedRange:
Sheets("Sheet_Name").UsedRange.Select
Esta declaración seleccionará todos los rangos utilizados en la hoja de trabajo, tenga en cuenta que a veces esto no funciona muy bien cuando elimina columnas y filas.
La alternativa es encontrar la última celda utilizada en la hoja de trabajo
Dim rngTemp As Range
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rngTemp Is Nothing Then
Range(Cells(1, 1), rngTemp).Select
End If
Lo que este código está haciendo:
- Encuentra la última celda que contiene cualquier valor
- seleccione la celda (1,1) hasta la última celda