下面的代码运行较早,但双击单元格时不会执行。
Private Sub Worksheet_DoubleClick(ByVal Target As range, Cancel As Boolean)
If Target.Font.Bold = False Then
Target.Font.Bold = True
Target.Font.Color = vbRed
Else
Target.Font.Bold = False
Target.Font.Color = 1
End If
End Sub
答案 0 :(得分:2)
不要手动输入任何这些签名!
请改为使用代码窗格下拉列表:
从左下拉列表中选择Worksheet
,然后在右下拉列表中选择要处理的事件; VBE将为您生成一个具有适当签名的方法存根。
从头顶手动输入它们可以(并且确实!)导致最终从未被调用的处理程序,或者更糟糕的是,被调用,但是给出了参数值错误的论点,例如如果使用反转参数手动输入UserForm_QueryClose
(处理程序有2个Integer
参数,那么您需要记住确切的顺序..否则您指定Cancel
并且表单理解您已分配CloseMode
)
如果您没有在左下拉列表中看到Worksheet
,那么您就不在工作表的代码隐藏模块中。工作表事件只能在工作表模块中处理。
在Workbook
模块(即ThisWorkbook
)中,您可以处理SheetBeforeDoubleClick
事件,以便双击工作簿中的任何工作表:< / p>
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End Sub
答案 1 :(得分:2)
不能解释为什么它不起作用(@Mat&#39; Mug和@Scott Craner再次击败我),但缩短了代码版本。< / p>
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target.Font
.Bold = Not .Bold
.Color = Choose(Abs(CLng(.Bold)) + 1, 1, vbRed)
End With
End Sub
好的,不像原作那么容易,但是这里有什么:
Target.Font.Bold
为TRUE或FALSE,因此Not .Bold
将返回相反的结果
Bold = TRUE所以不是粗体= FALSE
Abs(CLng(.Bold)) + 1
同样,.Bold为TRUE或FALSE。数值为TRUE = -1,FALSE = 0.
CLNG(.Bold)
将返回-1或0
ABS(CLNG(.Bold))
将返回1或0
Abs(CLng(.Bold)) + 1
将返回1或2 - 这在CHOOSE
命令中用于返回vbRed
或1
。