Vba 编程Excel时将所选内容设置为“无”

Vba 编程Excel时将所选内容设置为“无”,vba,excel,Vba,Excel,在使用range.copy和range.paste创建图形时,将保留选定的粘贴范围,然后在几行之后创建图形时,将选择作为绘图中的第一个系列。我可以删除这个系列,但是有没有更优雅的方法呢?我试过了 Set selection = nothing 但它不允许我设置选择。我还尝试了selection.clear,但这只是清除了最后选定的单元格,仍然在绘图中添加了一个额外的系列。我认为这是不可能的。以下是从Chip Pearson的网站复制的一些代码,未做任何修改: 非选择性电池 此过程将从选择中删除

在使用range.copy和range.paste创建图形时,将保留选定的粘贴范围,然后在几行之后创建图形时,将选择作为绘图中的第一个系列。我可以删除这个系列,但是有没有更优雅的方法呢?我试过了

Set selection = nothing

但它不允许我设置选择。我还尝试了selection.clear,但这只是清除了最后选定的单元格,仍然在绘图中添加了一个额外的系列。

我认为这是不可能的。以下是从Chip Pearson的网站复制的一些代码,未做任何修改:

非选择性电池

此过程将从选择中删除活动单元格

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
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

它会将您带到单元格A1,从而取消您现有的选择。

您可以设置
应用程序.screenUpdate=False
并从视图中选择一个单元格,然后将
.screenUpdate
设置为true。这至少不会在当前视图中显示任何选定的单元格。

在Excel 2007中,使用select和CutCopyMode属性的组合,可以重置所有选择。它适用于我的用例

Application.CutCopyMode = False
Application.CutCopyMode = xlCopy
ActiveSheet.Range("A" & lngRow).Select
问候
Madhur

有一种方法可以不选择任何东西来解决您的问题

  • 创建形状(一个矩形)
  • 在形状数据库>>>中命名它,例如:“就绪”
  • 参考它MYDOC.Shapes(“就绪”),并将可见性更改为False
  • 如果需要Excel,请选择“无”,然后执行以下操作:

    MYDOC.Shapes("Ready").visible=True
    MYDOC.Shapes("Ready").Select
    MYDOC.Shapes("Ready").visible=False
    
    这将隐藏所选内容,但窗口中仍没有选定内容 另外:您的工作表左上方会显示“就绪”一词。

    只需使用即可

    发送键“{ESC}”


    从而取消选择。

    选择任何单元格并关闭cutcopymode

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

    选择(1,1)。选择将仅选择当前选择的左上角单元格。

    如果使用按钮调用粘贴过程

    尝试在操作后激活按钮。这将成功清除所选内容

    没有

    • 不得不摆弄隐藏的东西
    • 选择另一个单元格(与要求的正好相反)
    • 影响剪贴板模式
    • 按escape的老套方法并不总是有效


    HTH

    尝试了你所有的建议,运气不好,但这里有一个对我有用的想法 从您的选择范围中选择一个单元格(例如AA1000000) 然后再次选择A1

    范围(“AA1000000”)。激活

    范围(“A1”)。激活


    Guy

    我在Excel 2013中遇到了这个问题。我设置了“冻结窗格”,这导致了问题。当我移除冻结的窗格时,问题得到了解决

    您只需在最后使用此代码即可。(不要使用False)


    Application.CutCopyMode
    的许多答案都不适用于我

    但我确实找到了一个没有贴在这里的解决方案,这对我来说非常有效

    来自StackExchange超级用户:

    如果确实希望“未选择任何内容”,可以在代码执行结束时使用VBA保护工作表,这将导致未选择任何内容。您可以将其添加到宏中,也可以直接将其放入VBA中

    一旦图纸未受保护,光标将激活一个单元格


    希望这能帮助有同样问题的人

    如果在已选择的范围内选择一个单元格,它将不起作用。但是,选择原始选择之外的范围将清除原始选择

    *原始选择*” ActiveSheet.range(“A1:K10”)。选择

    *新选择*” Activesheet.Range(“L1”)。选择

    *然后*” Activesheet.Range(“A1”)。选择如下所示的Do语句:

    ActiveSheet.Cells(ActiveWindow.SplitRow+1,ActiveWindow.SplitColumn+1).Select
    

    我尝试过这个,但它仍然为情节增加了一个额外的系列。非常有趣的是,我在这之后马上绘制了第二个图形,它没有额外的系列。它可能在一些场景中无法正常工作。如果以前选择的单元格已复制到剪贴板,则它(不一定)不会执行此操作。为什么不选择第一个系列?您实际要做的不是将“选择”设置为“无”(您总是选择了某些内容)。相反,你想弄清楚最终会选择什么进行复制。这是天才。谢谢这是一种惰性的迂回方式,用于执行
    Application.CutCopyMode=False
    。别这样,回答得好!这是对这个问题的直接回答,在我的情况下也是如此。我只是觉得我用代码创建的图形中有一行保持选中状态看起来不专业。Excel 2010 VBA-我想在VBA中复制并粘贴一个范围后取消选择(即删除动画虚线边框)。被接受的解决方案对我来说不起作用(奇怪的是,对OP来说也不起作用???),但这一个确实起作用了。+1。这应该是可接受的答案,因为它确实执行OP打算执行的操作(避免使用以前选择的单元格进行复制)-它关闭“复制的单元格”标记(单元格周围的虚线)。好吧,为我工作!同意Ister-除非我没有抓住问题的重点,否则这应该是公认的答案。这在Excel 2016中几乎适用于我,只是现在如果将形状上的visible设置为false,则选择将返回到最近选定的单元格。幸运的是,在我的例子中,工作表是受保护的,因此用户无法编辑形状,因此当形状的可见性设置为True时,这仍然有效,但形状实际上是隐藏的,因为隐藏了它所在的列。这有点精彩,但形状仍然处于选中状态。您没有添加以下明显的语句,“debug.print Selection”表示您仍然选择了某些内容;只是藏起来了。顺便说一句,selection.name也是这里的赠品。此外,.RangeSelection仍然存在,这对一些人来说可能是一个有用的小道消息,尤其是当选择不是一个范围时。不,这是不正确的,至少对一些人来说是这样
    Sub BtnCopypasta_Worksheet_Click()
       range.copy
       range.paste
    BtnCopypasta.Activate
    End sub
    
    Application.CutCopyMode = True
    
    Sub NoSelect()
       With ActiveSheet
       .EnableSelection = xlNoSelection
       .Protect
       End With
    End Sub
    
    Sub MyFunc()
    
        Range("B6").Select
    
        Selection.Locked = True
    
    End Sub
    
    ActiveSheet.Cells(ActiveWindow.SplitRow+1,ActiveWindow.SplitColumn+1).Select