Pregunta

Tengo algunas hojas de cálculo de Excel que están llegando a la base de datos bastante duro (más de 100 consultas contra la mesa del libro mayor ... ¡Ay!). Refrescante solo la hoja en la que estoy (Shift+F9) es útil en algunas hojas de cálculo, pero quería una forma de actualizar solo las celdas seleccionadas. Se me ocurrió el siguiente código, colocado en el objeto de este trabajo:

Dim currentSelection As String

Private Sub Workbook_Open()
    Application.OnKey "+^{F9}", "ThisWorkbook.RecalculateSelection"
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    currentSelection = Target.Address
End Sub

Private Sub RecalculateSelection()
    Range(currentSelection).Calculate
End Sub

Si es posible, me gustaría que esto sea más portátil, como almacenarlo en un archivo XLA y cargarlo como un complemento de Excel. ¿Es esto posible con el método que estoy usando? ¿Hay una mejor manera de lograr esto?

¿Fue útil?

Solución

Debería poder usar lo siguiente:

Public Sub RecalculateSelection()
    Dim rng As Range
    Set rng = Application.Selection
    rng.Calculate
End Sub

Debe colocar un manejo de errores alrededor de la línea 'Establecer RNG', ya que el usuario puede no haber seleccionado un rango (por ejemplo, puede haber seleccionado un gráfico).

Al usar el objeto de aplicación, no necesita capturar el evento Workbook_SheetSelectionChange.

Otros consejos

Si está utilizando el método de la respuesta aceptada anterior, primero debe verificar eso ...

If Not Selection Is Nothing Then
  If TypeName(Application.Selection) = "Range" Then 
  Dim Rng As Range 
  Set Rng = Application.Selection 
  Rng.Calculate 
 End If 
End If 

También es posible que desee agregarlo a los menús de contexto de la hoja y el nombre de la hoja. El nombre de las dos barras de comandos que debe hacer es ... "celda" y "captilla"

Si solo desea recalcular las celdas seleccionadas actualmente, ignorando las celdas que dependen de ellas, puede usar mi complemento de Rangecalc, descargable desdehttp://www.decisionmodels.com/downloads.htm

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top