2008-11-15 9 views
17

Cuando creo un gráfico después de usar range.copy y range.paste deja el rango de pegado seleccionado, y luego cuando creo un gráfico unas líneas más tarde, usa la selección como la primera serie en el gráfico. Puedo eliminar la serie, pero ¿hay una manera más elegante de hacer esto? Probé¿Cómo configuro la selección en Nada cuando programo Excel usando VBA?

Set selection = nothing 

pero no me deja configurar la selección. También probé selection.clear, pero eso solo borró las últimas celdas que fueron seleccionadas, y aún agregué una serie extra a la trama.

+0

¿Por qué no acaba de seleccionar la primera serie? –

Respuesta

18
Cells(1,1).Select 

Se le llevará a la celda A1, cancelando así su selección existente.

+0

Intenté esto, y todavía agrega una serie adicional a la trama. Curiosamente, tracé un segundo gráfico inmediatamente después de esto, y no tiene la serie adicional. – Curt

2

No creo que esto se pueda hacer. Aquí hay un código copiado sin modificaciones del sitio de Chip Pearson: http://www.cpearson.com/excel/UnSelect.aspx.

UnSelectActiveCell

Este procedimiento eliminará la celda activa de la selección.

Sub UnSelectActiveCell() 
    Dim R As Range 
    Dim RR As Range 
    For Each R In Selection.Cells 
     If StrComp(R.Address, ActiveCell.Address, vbBinaryCompare) <> 0 Then 
      If RR Is Nothing Then 
       Set RR = R 
      Else 
       Set RR = Application.Union(RR, R) 
      End If 
     End If 
    Next R 
    If Not RR Is Nothing Then 
     RR.Select 
    End If 
End Sub 

UnSelectCurrentArea

Este procedimiento eliminará el área que contiene la celda activa de la selección.

Sub UnSelectCurrentArea() 
    Dim Area As Range 
    Dim RR As Range 

    For Each Area In Selection.Areas 
     If Application.Intersect(Area, ActiveCell) Is Nothing Then 
      If RR Is Nothing Then 
       Set RR = Area 
      Else 
       Set RR = Application.Union(RR, Area) 
      End If 
     End If 
    Next Area 
    If Not RR Is Nothing Then 
     RR.Select 
    End If 
End Sub 
0

Puede establecer el Application.ScreenUpdating = False y seleccionar una celda fuera de la vista y luego establecer el .ScreenUpdating en verdadero. Esto al menos no mostraría ninguna celda seleccionada en la vista actual.

22
Application.CutCopyMode = False 
+0

Excel 2010 VBA- Quería deseleccionar un rango (es decir, eliminar el borde discontinuo animado) después de copiarlo y pegarlo en vba. La solución aceptada no funcionó para mí (ni curiosamente para el OP parece?) Pero esta sí. –

1

En Excel 2007, una combinación que utiliza la propiedad de selección y CutCopyMode, es posible restablecer todas las selecciones. Funcionó para mi caso de uso.

Application.CutCopyMode = xlCopy 
ActiveSheet.Range("A" & lngRow).Select 

Saludos Madhur

3

Hay una manera de seleccionar NADA que resolver su problema.

  1. Crear una forma (un rectángulo)
  2. nombre en la base de datos Formas >>> por ejemplo: "listo"
  3. se refieren a ella MYDOC.Shapes ("Ready") y cambiar la visibilidad en False

Cuando se desea que Excel no seleccione nada que hacer:

MYDOC.Shapes("Ready").visible=True 
MYDOC.Shapes("Ready").Select 
MYDOC.Shapes("Ready").visible=False 

Este ocultar la selección y nada aún seleccionada en ti r ventana MÁS: La palabra "Listo" se muestra en la parte superior izquierda de su Hoja.

7

sólo tiene que utilizar

SendKeys "{ESC}"

cancelando así su selección.

+0

Esto es genio. ¡Gracias! –

+0

parece que no funciona en Excel 2013 – MusuNaji

7

Seleccione cualquier celda y desactive el modo copiado.

Range("A1").Select 
Application.CutCopyMode = False 
0

Selection(1, 1).Select seleccionará sólo la celda superior izquierda de la selección actual.

0

Si se utiliza un botón para llamar al procedimiento pasta,

intento de activar el botón después de la operación. esto aclara con éxito la selección

sin

  • tener que perder el tiempo con cosas ocultas
  • seleccionar otra célula (que es exactamente lo contrario de lo que se pidió)
  • que afecta el modo de portapapeles
  • tener el método hacky de presionar escape que no siempre funciona

HTH

Sub BtnCopypasta_Worksheet_Click() 
    range.copy 
    range.paste 
BtnCopypasta.Activate 
End sub 

HTH

0

intentado todas sus sugerencias, sin suerte, pero aquí está una idea que funcionó para mí seleccionar una celda fuera de su rango de selección (por ejemplo AAA1000000) y luego seleccione la A1 nuevo

Range ("AAA1000000"). Activar

Range ("A1"). Activar

individuo

1

Tuve este problema con Excel 2013. Tenía el juego "congelar paneles", lo que causó el problema. El problema se resolvió cuando eliminé los paneles congelados.

2

Simplemente puede usar este código al final. (No use False)

Application.CutCopyMode = True 
+0

No estoy seguro de por qué esta no es la respuesta aceptada. – NapkinBob

Cuestiones relacionadas