将范围值复制粘贴到另一列

时间:2017-12-20 18:40:21

标签: excel excel-vba vba

我在下面的代码中有以下代码。关键是当一个值插入F5列,即10时,该值被复制并粘贴在W5列中,因此W5为10.

我的问题是,如果我将W5中的值从10更改为8,则代码不再返回10,即使我在代码中设置W5必须仅采用F5中的值。

重点是我想阻止用户更改W5列中的值:W100,因为这些值必须只是从F5列中获取的值:F100。

Dim cellbc As Range
         Application.EnableEvents = False
            For Each cellbc In Target
             If Application.Intersect(cellbc, Range("f5:f100")).Copy Then
                Application.Intersect(cellbc, Range("W5:W100")).Paste
             End If
       Next cellbc
         Application.EnableEvents = True

2 个答案:

答案 0 :(得分:0)

我不确定你究竟在问什么。

如果您需要F5与W5相同,您可以在Excel中使用公式F5 = W5 - 无需VBA。

如果您需要它,您可以使用工作表保护。

如果您需要复制并粘贴整个列 -

Thisworkbook.Sheets("SheetNameHere").Range("F5:F100").Value2 = Thisworkbook.Sheets("SheetNameHere").Range("W5:W100").Value2 

答案 1 :(得分:-1)

您的代码正在检查更改的单元格是否在F5:F100范围内。

更改单元格W5时,Application.Intersect函数返回false,并且复制/粘贴操作未完成。

如果您需要确保单元格W5:W100中的任何更改立即被F5:F100中的值覆盖,您需要检查源或目标范围是否已更改;然后我建议只复制整个范围(F5:F100)。

或者您可以保护范围W5:W100,因此无法从电子表格中进行编辑。要执行此操作,首先选择用户可以编辑的所有单元格,然后转到格式 - >单元格 - >保护并取消勾选“锁定”复选框。接下来,选择W5:W100中的单元格,重复上述操作并确保它们“锁定”。最后,保护整个电子表格(工具 - >保护 - >保护表)并取消选中“允许用户选择锁定的单元格”框。添加密码(或者不......锁定机制以任何一种方式工作,但如果你有密码,用户将很难覆盖它)并且你很高兴。

当然,如果你走上述路线,你不再需要VBA,你可以在W5单元格中使用“= F5”等。