web-dev-qa-db-ja.com

Excelのプログラミング時に選択をなしに設定する

Range.copyとrange.pasteを使用してグラフを作成すると、貼り付け範囲が選択されたままになり、数行後にグラフを作成すると、選択範囲がプロットの最初の系列として使用されます。シリーズを削除できますが、これを行うよりエレガントな方法はありますか?私は試した

Set selection = nothing

ただし、選択を設定することはできません。 selection.clearも試してみましたが、選択された最後のセルがクリアされ、プロットに余分なシリーズが追加されました。

22
Curt
Cells(1,1).Select

セルA1に移動し、既存の選択をキャンセルします。

22
shahkalpesh
Application.CutCopyMode = False
31
David

任意のセルを選択し、cutcopymodeをオフにします。

Range("A1").Select
Application.CutCopyMode = False
9
user3032537

使うだけ

SendKeys "{ESC}"

これにより、選択がキャンセルされます。

8
TheAxeman

問題を解決するNOTHINGを選択する方法があります。

  1. 形状(1つの長方形)を作成する
  2. シェイプデータベースに名前を付けます>>>例:「準備完了」
  3. MYDOC.Shapes( "Ready")を参照し、可視性をFalseに変更します

ExcelのSELECT NOTHINGが必要な場合:

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

これにより、選択が非表示になり、ウィンドウでまだ何も選択されていないPLUS:シートの左上に「準備完了」という単語が表示されます。

5
Miguel

最後にこのコードを使用するだけです。 (Falseを使用しないでください)

Application.CutCopyMode = True
4
RHH1095

これができるとは思いません。以下は、Chip Pearsonのサイトから修正なしでコピーされたコードです: 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
3
Fionnuala

Excel 2007では、selectとCutCopyModeプロパティを使用して、すべての選択をリセットできます。私のユースケースでうまくいきました。

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

よろしくMadhur

1
Madhur Kashyap

この問題はExcel 2013で発生しました。「フリーズペイン」が設定されていたため、問題が発生しました。固定ペインを削除すると、問題は解決しました。

1
JustinMT
Sub MyFunc()

    Range("B6").Select

    Selection.Locked = True

End Sub
0
BOBY

Application.CutCopyModeまたは.Selectを使用した多くの回答のどれも、私にとってはうまくいきませんでした。

しかし、私はここに掲載されていない解決策を見つけました。

StackExchange SuperUserから: Excel VBA「選択解除」が必要

「何も選択しない」場合は、VBAを使用して、コード実行の最後にシートを保護できます。これにより、何も選択されなくなります。これをマクロに追加するか、VBAに直接配置することができます。

Sub NoSelect()
   With ActiveSheet
   .EnableSelection = xlNoSelection
   .Protect
   End With
End Sub

シートの保護が解除されるとすぐに、カーソルがセルをアクティブにします。

これが同じ問題を抱えている人を助けることを願っています!

0
kdo53

Selection(1, 1).Selectは、現在の選択の左上のセルのみを選択します。

0
Patrick Honorez

ボタンを使用して貼り付け手順を呼び出す場合、

操作後にボタンをアクティブにしてみてください。これにより、選択が正常にクリアされます

なしで

  • 隠されたものをいじる必要がある
  • 別のセルを選択する(これは尋ねられたものとまったく反対です)
  • クリップボードモードに影響する
  • 常に機能するとは限らないエスケープを押すというハッキング方法がある

HTH

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

HTH

0
Garreth Tinsley

Application.ScreenUpdating = Falseを設定し、ビューからセルを選択して、.ScreenUpdatingをtrueに設定できます。これにより、少なくとも現在のビューで選択したセルが表示されなくなります。

0
Jaaahn

すでに選択されている範囲内のセルを選択した場合動作しません。ただし、元の選択範囲外の範囲を選択すると、元の選択範囲はクリアされます。

'*元の選択*' ActiveSheet.range( "A1:K10")。Select

'*新規選択*' Activesheet.Range( "L1")。Select

'* Then *' Activesheet.Range( "A1")。Select

0
Phil

すべての提案を試してみましたが、運はありませんでしたが、ここであなたの選択範囲(AAA1000000など)からセルを選択してからA1をもう一度選択してください

Range( "AAA1000000")。Activate

Range( "A1")。Activate

0
Guy