【问题标题】:Upon double clicking a cell, copy cell value to another cell on that same row双击单元格后,将单元格值复制到同一行的另一个单元格
【发布时间】:2014-11-24 11:12:40
【问题描述】:

这个 VBA 代码可以满足我的需要,但只在一行上:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C1:H1")) Is Nothing Then
    Cancel = True

    If Application.CountIf(Sheets("Sheet2").Range("B:B"), Target.Value) = 0 Then
        Range("B1").Value = Target.Value
    End If
End If
End Sub

我的 Excel 工作表上有:

A    B   C    D    E   F   G   H
MAN     NN   NNP  JJ  POS
CAN     MOD  NN   VV   JJ  RB  NON
...     ...

多达 300,000 个数据。

我希望当我双击 C:H 范围内的任何单元格时,其值将被复制到 B。上面的代码只处理一行。如果我将 C1:H1 更改为 C2:H2 并将 B1 更改为 B2,它将处理第二行。

如何使它适用于所有行?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我认为以下更改会起作用(未经测试,在 iPhone 上):

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
        If Not Intersect(Target, Range("C:H")) Is Nothing Then
            Cancel = True
    
            If Application.CountIf(Sheets("Sheet2").Range("B:B"), Target.Value) = 0 Then
                Cells(Target.Row, 2).Value = Target.Value
            End If
        End If
    
    End Sub
    

    【讨论】:

    • 如果用户双击C:H,您的代码将退出子程序
    • 所有需要在原始代码中更改的是Range("B1").Value = Target.ValueCells(Target.Row, 2).Value = Target.Value,当然还有Range("C1:H1")Range("C:H")
    • @SiddharthRout - 感谢您发现这一点。我假设(查看 iPhone 上糟糕的换行代码)Cancel = True 的意思是“这里无事可做”。 Exit Sub 确实是错误的。现在修好了。