单击并突出显示单元格并转发到新单元格

时间:2011-10-17 13:34:42

标签: excel vba

所以,这是一个新的一周,我有改进的新想法。我所做的部分工作是向各地的各个办事处和部门发送报告;这些办公室反过来假定来查看信息并注意不一致。就像生活中的一切一样,事实证明这比其他事情更麻烦。为了让它更加轻松(我希望),我想为他们尝试一些不同的东西。我想要做的是在工作表中设置一些个人收到的东西:

  1. 首先,我想设置工作表,以便当用户 点击单元格突出显示单元格;
  2. 其次,在单元格突出显示之后,活动框将会 自动转移到行末的“注释”框 用户将在何处输入他们关于该单元格的注释 问题突出了;和
  3. 第三,假设有人会犯错并突出显示 错误的东西我想添加额外的功能 如果用户选择一个突出显示的单元格,那么它会 清除细胞中的亮点。
  4. 可能?建议?谢谢!

2 个答案:

答案 0 :(得分:3)

JMax在识别缺陷方面是正确的,因为如果单元格改变颜色并且每次单击它时都选择一个注释单元格,则无法编辑该单元格。解决此问题的最佳方法是仅在双击时更改颜色。我还会定义所选的行/列,看看它们是否属于表的范围(而不是使用Application.Intersect),但这只是个人偏好

像...一样的东西。

Private Sub Worksheet_Beforedoubleclick(ByVal target As Range, cancel As Boolean)

Application.EnableEvents = False

Dim TargRow as Variant
Dim TargCol as Variant

TargRow = target.Row
TargCol = target.Column

'Define Header, FirstCol, CommentCol, LastCol as required to define your table/range where you wish these changes to be made. CommentCol is the cell in which comments should be made

    If TargRow > Header And TargCol > FirstCol and TargCol < LastCol Then
        If Cells(TargRow,TargCol).Interior.ColorIndex <> -4142 Then 'change color as required to match background
        Cells(TargRow,TargCol).Interior.ColorIndex = 3 'change color as required; this makes them red
        Cells(TargRow,CommentCol).Select
        Else
        Cells(TargRow,TargCol).Interior.ColorIndex = -4142 'match color from start of IF statement
        End If
    End If

Application.EnableEvents = True
End Sub

请注意,我们禁用了事件,因此我们选择不同的单元格时不会触发其他代码。这在实现Worksheet_SelectionChange事件时是绝对必要的,而使用BeforeDoubleClick事件则更少

考虑如何触发宏以及它们如何为用户提供灵活性非常重要。这个Excel help video提供了合理的介绍

答案 1 :(得分:1)

您可以(可能必须)使用的是Worksheet_SelectionChange事件过程:

请参阅MSDN了解其工作原理 您还应该看看Chip Pearson的page about events

当用户更改选择时,您应该检查您是否在正确的单元格中(使用Intersect),如果是,请更改Target背景颜色并将ActiveCell更改为你应该发表评论的那一个 顺便说一下,在移动到另一个单元格之前,您可以检查单元格是否已被高亮显示。

此方法的主要缺点是,每次用户点击相应的单元格时,它会移动Excel选择。解决方案是告诉用户使用 Scroll Lock 键并使用箭头导航。有关其工作原理,请参阅this link