繁体   English   中英

在单元格区域中单击任何单元格时,将其复制并粘贴为值

[英]Copy and Paste as Value when any cell is clicked within a range of cells

我有一组VBA代码,可复制Sheet2中的单元格“ AC14”并将其值粘贴到Sheet6中的单元格“ Q4”。 我有另一组代码可以在Sheet6中更改单元格“ Q4”的值时在Sheet6中应用过滤器,对此我感到很高兴。 这些代码虽然不完善,但在一定程度上可以奏效。 以下是我用于复制和粘贴部分的代码。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Range("AC14"), Target) Is Nothing Then
Range("AC14").Select
Selection.Copy
Sheet6.Activate
Sheet6.Range("Q4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End If

结束子

我想在以下方面进行改进:

1)将Range(“ AC14”)更改为列“ AC”中动态范围内的动态单元格,该动态范围从第11行开始到不时更改的行号。 这样,当我(或用户)单击此范围内的任何单元格时,代码将正确运行。

注意:Sheet2是一个工作表,用于记录对我正在处理的项目所做的更改。 每行代表我的项目的一个更改,随着时间的流逝,更改(行)的数量可能达到1500。Sheet2的第1到10行分配给列标签

2)当我的光标位于Sheet2的“ AC14”单元格上时,再次单击它不会带我进入Sheet6。 我了解这是因为它不是工作表中的更改(在vba中,因为cursur已经存在)。 但是,如果我单击其他单元格,然后再次单击单元格“ AC14”,则代码将起作用。 有没有解决的办法?

如果有人能向我阐明如何解决上述问题,我将不胜感激。 提前致谢。

肖恩

关于项目2:看起来您确实需要定义需求。 当前,您正在使用Worksheet_SelectionChange事件。 就其本质而言,当使用鼠标或键盘更改选择时,代码将运行。 如果用鼠标再次单击已选择的单元格,则该代码将不会运行。 因为那不会改变选择。

您可能还希望使用其他事件,但是单击已选择的单元格就无法使它们起作用,因此,从您的问题的最真实的意义上讲:不,没有解决方法。

这可能对您有用:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Cells.CountLarge > 1 Then Exit Sub

    If Target.Row >= 14 And Target.Column = 29 and Target.Value <> "" Then

        Sheet6.Range("Q4").Value = Target.Value
        Target.Offset(0, -1).Select  'select the cell to the left
        Sheet6.Activate

    End If

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM