我对VBA很陌生,但到目前为止我还是来了。直到这一刻,我仍然坚持这一挑战。
我的目标是从B,C,D或E列的单元格中的下拉菜单中选择百分比(10,90或100),当选择其中一个百分比时,我希望计算相同的单元格A列中所选值的百分比。
因此,当A列中的单元格值为“500”并且在C列的同一行中,我选择“90”,我希望将90替换为450(0.9 * 500)
这里给出的代码是我到目前为止所获得的代码,包括一些已经从另一个主题“借用”的代码。虽然它适用于新的,干净的Excel工作表,但它不适用于我希望它工作的文档。
你们中有些人有什么想法可以找到这个漏洞吗? (我甚至创建了一个只有任务的命令按钮:Application.EnableEvents = True)
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
If Not Intersect(Target, Range("B:D")) Is Nothing Then
Application.EnableEvents = False
If Target.Value = 90 Then Target.Value = 0.9 * Cells(Target, 1).Value
ElseIf Target.Value = 10 Then Target.Value = 0.1 * Cells(Target, 1).Value
ElseIf Target.Value = 100 Then Target.Value = Cells(Target, 1).Value
Else
MsgBox "Not a valid percentage"
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub
答案 0 :(得分:0)
听起来你想要Workbook_SheetChange事件。在VBA编辑器中将您的逻辑添加到ThisWorkbook。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "Cell changed. Target: " & Target.Worksheet.Name & "!" & Target.Address
End Sub
将上述代码添加到ThisWorkbook
工作簿中任何工作表上的更改都将触发该事件。
答案 1 :(得分:0)
你不需要VBA来做你所要求的。数据验证和公式将起作用:
答案 2 :(得分:0)
意味着你在application.enableevents = false时因错误而停止了,你再次运行了这个东西而没有在两者之间的application.enableevents = true ...
我实际上有一个按钮来解决这个问题,就在我调试代码时,或者在VB编辑器中,Ctrl + G,在即时窗口中,你可以编写application.enableevents = true