Установка выбора в Ничто при программировании Excel - PullRequest
21 голосов
/ 15 ноября 2008

Когда я создаю график после использования range.copy и range.paste, он оставляет выбранный диапазон вставки, а затем, когда я создаю график несколькими строками позже, он использует выделение в качестве первой серии на графике. Я могу удалить серию, но есть ли более элегантный способ сделать это? Я пытался

Set selection = nothing

но это не позволит мне установить выбор. Я также попробовал selection.clear, но он только очистил последние выбранные ячейки и все же добавил дополнительную серию к графику.

Ответы [ 16 ]

29 голосов
/ 25 сентября 2010
Application.CutCopyMode = False
21 голосов
/ 16 ноября 2008
Cells(1,1).Select

Вы попадете в ячейку A1, тем самым отменив существующий выбор.

9 голосов
/ 25 ноября 2013

Выберите любую ячейку и отключите режим копирования.

Range("A1").Select
Application.CutCopyMode = False
9 голосов
/ 11 февраля 2013

Просто используйте

SendKeys "{ESC}"

тем самым отменяя ваш выбор.

4 голосов
/ 26 января 2012

Есть способ ВЫБРАТЬ НИЧЕГО, что решит вашу проблему.

  1. Создание фигуры (один прямоугольник)
  2. Назовите его в базе данных Shapes >>>, например: "Готово"
  3. Обратитесь к нему MYDOC.Shapes ("Ready") и измените видимость на False

Если вы хотите, чтобы Excel НИЧЕГО НЕ ВЫБИРАЛ, сделайте это:

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

Это скрывает выбор и ничего не выделено в вашем окне ПЛЮС: слово «Готово» отображается в левой верхней части листа.

3 голосов
/ 21 марта 2017

Вы можете просто использовать этот код в конце. (Не используйте False)

Application.CutCopyMode = True
3 голосов
/ 15 ноября 2008

Я не думаю, что это можно сделать. Вот некоторый код, скопированный без изменений с сайта Чипа Пирсона: http://www.cpearson.com/excel/UnSelect.aspx.

UnSelectActiveCell

Эта процедура удалит активную ячейку из выбора.

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

Эта процедура удалит область, содержащую активную ячейку, из выделения.

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
1 голос
/ 20 июля 2016

У меня была эта проблема с Excel 2013. У меня была установлена ​​«стоп-панель», которая вызвала проблему. Проблема была решена, когда я удалил замороженные панели.

1 голос
/ 03 октября 2010

В Excel 2007, комбинация, использующая select и свойство CutCopyMode, позволяет сбросить все выбранные элементы. Это сработало для моего варианта использования.

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

С уважением Madhur

0 голосов
/ 13 марта 2019
Sub MyFunc()

    Range("B6").Select

    Selection.Locked = True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...