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