Tag: 事件

Excel中的Cell_Changing事件

在用户input提交到单元格之前 ,是否有相当于VBA Cell_Change Event或VSTO事件? 在单元格中input新值之前,我需要添加一些检查。 到WorkSheet_Change事件触发时,Excel已经修改了用户input并将其转换为不同的值。 我需要获取用户input的原始input。 编辑 更具体地说,我想阻止Excel将3E9这样的值转换为科学记数法,这种值恰好是我的情况下的有效(非数字/非科学)input。 这些值可以由用户在整个工作表中的任何单元格中input,所以我不能预先应用文本格式,因为这会阻止Excel在有效的数字数据上执行正常的function。 所以我打算: 以某种方式抓取input,然后进入单元格并进行转换。 然后检查它是否符合我正在观察的确切模式,并在该特定单元格上实时应用文本格式。

什么是优秀的VBAcombobox更改事件?

我正在写一个VBA代码在我的Excel中。 我在Excel中的工作表中有combox框。 我想在用户selectcomboxbox中的不同项目时运行特定的子程序。 ComboBox更新时是否有任何事件? 感谢您的帮助提前

图表事件 – 激活工作表

我使用以下代码来识别图表的每个部分何时被选中,然后链接到一个不同的工作表: Option Explicit Public WithEvents CHT As Chart Private Sub Workbook_Open() Set CHT = ActiveSheet.ChartObjects(1).Chart End Sub Private Sub CHT_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long) On Error GoTo Fin If Range("A1") = "Product" Then If Selection.Name = Range("J29").Value Then Application.Goto ActiveWorkbook.Sheets(Range("J29") & "P").Range("A1") End If If Selection.Name = Range("J30").Value […]

在Excel VBA中处理InternetExplorer对象事件

我想在我的Excel VBA代码中处理对象InternetExplorer的事件。 在此页面上,您可以看到InternetExplorer对象的所有可用事件: http : //msdn.microsoft.com/zh-cn/ie/aa752084(v=vs.94).aspx Dim ie As InternetExplorer Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.Navigate "http://www.google.com" While ie.Busy DoEvents Wend Set mybrowser = Nothing 我想捕捉一个BeforeNavigate和一个NavigateComplete事件,上面的代码应该触发。 我将如何设置我的代码来做到这一点?

Excel VBA中的BeforeOneClick事件

我正在寻找像这样的东西: Private Sub Worksheet_Before One Click(ByVal Target As Range, Cancel As Boolean) 每当我用“A1”单元格上的左键单击一次时,我想将其值从“是”改为“否”,从“否”改为“是”(取决于点击之前的值)。 问题是Excel中没有类似Worksheet_Before的事件单击Excel VBA中的事件仅用于双击,右键单击和select更改(单击左键单击)。 但请注意,保持点击一次A1,我不会改变select。 我可以做这个: Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'do my code here Range(" A2 ").Select 'so I can again click on A1 有更好的解决方法吗?

Worksheet_Calculate无任何触发器运行

我遇到了一个奇怪的事件行为,我不明白。 请帮忙。 以下是对问题的解释。 在我的Worksheet_Change事件,在开始我已经设置Application.events = False 。 然后我运行主要代码,改变一些东西,包括公式。 主代码完成后,重置Application.EnableEvents = True 。 然后Worksheet_Change事件在Exit Sub结束。 在代码完成之后,即使在Application.EnableEvents = True之后没有代码,也会触发Worksheet_Calculate事件。 我不希望这个事件被触发 。 这是一个代码的快照: Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Main code Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub Private Sub Worksheet_Calculate() 'triggered without any reason? […]

由单元格更改触发的事件

我有一个validation框,其中存储了一些销售渠道,如“SME100”,“间接”等… 现在我有一个自动过滤系统设置,但我想创build一个事件,说:“当单元格”B2“更改,然后激活”Auto_Filter“”。 这是我目前有的。 它不会返回错误消息,但是当我在前端testing它时,它也不会运行macros。 Private Sub CellChangeFilter() Dim Tariff_Selection As String Set Tariff_Selection = Cell("B1") If Tariff_Selection = "" Then Auto_Filter End Sub 正如你所看到的,我已经为特定的单元创build了一个variables,我希望这个事件可以被监控。

loggingExcel触发的事件

我正在寻找一种方法来logging一个Excel文件的所有触发事件。 我想要使​​用它的文件很大(大约160张),并且在工作簿和不同的工作表上有多个事件过程。 因此,在每个Event子项中添加一些代码是不可选的,因为子项数量很大 。 有谁知道一个工具或VBA的伎俩能够logging这些? logging所有过程调用也是一个选项。

Excel VBAcheckbox单击并更改事件相同?

我有5个checkbox为macros设置了一些选项,其中一个是Select / Unselect Allcheckbox。 当你select邮件删除或标记为已读等,我想创build类似于基于Web的邮箱的东西。当我检查select/取消全选checkbox,我把其余的checkbox的值为true,反之亦然当我取消选中。 没关系。 问题来了,当我也想validation,如果一切都没有检查,并逐一检查其他checkbox,如果最后我检查所有,然后select/取消select所有checkbox转到检查。 反之亦然,这意味着如果eveything被检查,然后取消其他四个之一,那么我将“All”checkbox设置为false(未选中)。 但是,似乎即使我只是设置了值,例如Option1Checkbox.value = True,在SelectAllCheckbox_Click事件中,它也触发了Option1Checkbox_Click和Option1Checkbox_Change事件。 不应该只是触发Change事件,因为我实际上没有点击该checkbox? 会发生什么事是我检查SelectAll,所以它将Option1选中,但是通过这样做,Option1也会触发click事件,所以它取消选中它再次触发click事件,然后再次取消选中Allcheckbox,最后留下一切没有检查,就像开始时一样。 希望这部分足够清楚。 我怎样才能避免这种行为? 我如何确保只有Change事件被触发,而不是Click事件? 有没有人有过这样的checkbox安排,并有类似的问题? 或者你是如何做到这一点,而没有我得到的行为? checkbox不在窗体上,而只在工作表上。 他们是ActiveX控件。 而我所拥有的并不复杂: Private Sub SelectAll_Click() Option1Checkbox.Value = SelectAll.Value Option2Checkbox.Value = SelectAll.Value Option3Checkbox.Value = SelectAll.Value Option4Checkbox.Value = SelectAll.Value End Sub 然后选项checkbox单击事件看起来像这样: Private Sub Option1Checkbox_Click() If Option1Checkbox.Value = True And Option2Checkbox.Value = True And Option3Checkbox.Value = True And […]

防止子运行

在sheet1(我称之为“MainSheet”)中,我在我的VBA脚本中有一个子部分,用于检查单元在此工作表中更改时某些单元的值。 (当一个单元格被改变时将会发生的主要动作之一是修改它的颜色,单元格的值为绿色,空单元格为红色) 但是现在我还有一些其他的sub也会改变单元格(在主表单中),但是在这种情况下,我不需要(也不想)VBA来检查单元格,并在每个单元格后将颜色调整为它们的值更改。 (编辑大量单元格时很烦人)。 (我已经试图把这个子文件放在VBA的“ThisWorkbook”部分,而不是Sheet1(MainSheet)部分,但不幸的是这并没有什么不同)。 问题一:是否有可能防止这一点? 我也有一个相关的问题,在另一个值得一提的问题,我认为:在这一个新的工作表创build,命名和填充文本从.txt文件。 然后工作表将被保存为新的工作簿,工作表将被删除。 (纸张的名称等于它保存时将得到的名称,并且不断变化)当我将.txt行逐一复制到此表中时,我提到的第一个子(编辑单元格的颜色) 叫做。 在这个子部分发生的第一件事之一就是调用我的MainSheet。 当薄子完成后,行复制子将继续,但将开始粘贴我的主表中的行。 我试图在这个子文件中input行,select带有variables名称的工作表,但是一直跳到MainSheet。 问题二:如何防止跳转到MainSheet? (这两个问题可能都有相同的解决scheme。) 修改单元格颜色的子: Private Sub Worksheet_Change(ByVal Target As Range) Dim j As Integer 'Collor all cells green containing values, collor empty cells red. ''Starts automaticly after every cell change within this sheet 'Huidige Cell onthouden If Not Intersect(Target, Range("A9:A29")) Is Nothing Then […]