Tag: 事件

Excel加载项function区单击事件冒泡

我正在遵循MSDN上的演练: 使用function区devise器创build自定义选项卡 看第3步和第4步: 在第3步中,它将一个事件处理函数添加到ribbon_Load函数中,基本上将一个单击事件添加到function区中的button: private void MyRibbon_Load(object sender, RibbonUIEventArgs e) { this.button1.Click += new RibbonControlEventHandler(this.button1_Click); } 然后,在步骤4中,以我更习惯的方式添加另一个事件处理程序,如下所示: private void button1_Click(object sender, RibbonControlEventArgs e) { MergeReportInterface ui = new MergeReportInterface(); ui.ShowDialog(); } 我并不真正理解这个目的,因为它所做的只是导致事件发生两次。 如果我注释掉添加到load函数的事件处理程序,事件就会发生一次。 请问有人可以向我解释这是什么意思? 如果有的话,或者如果MSDN网站上有一些错误。 应该怎样处理一个丝带点击事件?

Application.Ontime取消无法对对象“应用程序”的方法“ONTIME”

我完全失去了,所以任何帮助将不胜感激。 我正在尝试取消2个打开工作簿时触发的计划事件,并重复使用Application.Ontime方法。 我知道要终止OnTime日程安排循环,您必须提供计划运行的确切时间,并且具有多个Application.OnTime任务需要多个variables。 这就是为什么我设置了两个公共variables(选项显式下面的文档的标题): Dim dTime as Date Dim dTime2 as Date 调度程序使用这些variables,一切运行正常,代码每分钟运行一次。 dTime的值在TaskTracker函数中设置为: dTime = Now() + TimeValue("00:01:00") Application.OnTime dTime, "TaskTracker", , True dTime2的值在Autoclear函数内设置为: dTime2 = Now() + TimeValue("00:01:00") Application.OnTime dTime, "AutoClear", , True 尽pipe如此,当试图在模块的末尾运行函数时,我得到了Object'Application方法的'ONTIME'错误消息: Function AutoDeactivate() Application.OnTime EarliestTime:=dTime, Procedure:="TaskTracker", _ Schedule:=False Application.OnTime EarliestTime:=dTime2, Procedure:="AutoClear", _ Schedule:=False End Function 这是我绝对不会得到什么问题的地方。 触发debugging将我带到每个程序取消尝试的OnTime部分。 下面是包含这些元素的脚本。 希望这会给你们一些洞见,为什么这些事件不能被取消。 请给我这个剧本是漫长的:P […]

Excel VBA:将button单击事件更改为单元格值更改事件

我创build了一个由button单击事件驱动的简单的值总和示例,如下所示。 Sub buttonEvent() Dim a As Double a = Application.WorksheetFunction.Sum(Range("A1:A10")) Cells(11, 1).Value2 = a End Sub GUI如下所示。 当我点击求和button时,这个macros在定义的范围内求和。 我想改变点击事件作为范围值更改事件。 这意味着,只要我在范围内改变一个值,就会执行数值求和function。 我怎样才能做到这一点?

VBA Excel更新事件之后退出input事件

假设我在用户窗体上有一个combobox1,2,3和一个textbox1。 After update事件后关联到combobox1。 after update事件被触发after update ,按Tab键(填充combobox2和3)。 在这个事件的代码中,在退出子文件之前,有一个textbox1.setfocus跳过以tab键(combobox 1,2,3,textbox1)input其他cobobox。 它工作得很好。 当我添加另一个combobox,现在是combobox2,tab选项被改为1,2,3,4。 After update ,仍然关联到combobox1和textbox1.setfocus是退出子之前的最后一行。 不幸的是,当执行after update退出子行时,会触发combobox3 enter event并将焦点移动到combobox3。 这是更难以理解,因为标签顺序是combobox1,2,3,4所以它也跳过标签顺序。 当我debuged代码,焦点textbox1被设置为它应该,但仍然只是当退出子被执行,代码行被移动到combobox3input事件…任何提示赞赏。

如何在单元格中显示值取决于其填充颜色 – Excel VBA中的事件

在Excel中,我希望根据其填充颜色(如IFCOLOR())显示当前单元格中的值。 当我改变填充颜色时,Excel应该自动执行此操作,因此它应该是事件。 例如:当我用绿色填充单元格时,Excel会自动显示值100当我用红色填充单元格然后自动Excel显示值75等等… Excel VBA中的事件可以做到这一点吗? 或者你可以给我其他的想法如何做到这一点? 我使用了Workbook_SheetChange但是当我更改单元格中的值而不是其背景颜色时,它可以正常工作。 问候1月

Excel工作表更改事件不会在多个单元格被删除时发生

我有代码来触发一个改变事件,将诉诸我的数据。 该图表在AD栏中有信息。 代码触发数据随时在列D中的值改变。 当我input新的数据时,以及当我删除列D中的单元格的内容,但是,如果我select在某一行的列AD中的信息,然后点击删除,删除所有四个单元格的内容与数据在那一行,事件不会触发。 为了做到这一点,我需要改变什么? 代码是 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 Then Application.EnableEvents = False Range(Cells(1, 1), Cells(90, 1)).Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range(Cells(2, 1), Cells(90, 1)) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range(Cells(1, 1), Cells(90, 4)) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply […]

刷新所有不触发QueryTable的BeforeRefresh事件 – 为什么?

正如标题所述:我发现单击function区上的“全部刷新”button不会触发QueryTable的BeforeRefresh事件。 为什么这样? 有没有办法改变这种行为? 奇怪的是,完全相同的QueryTable的AfterRefresh事件触发完成! 为了分析这个行为,我在两个工作表中创build了两个表: 简单的,无链接的表格称为Source 称为Destination链接到Source表的表。 连接是使用Microsoft Query和Excel文件作为数据源创build的。 然后,我创build了TestClass ,如下所示: Option Explicit Private WithEvents qt As QueryTable Public Sub Init(pQt As QueryTable) Set qt = pQt End Sub Private Sub qt_BeforeRefresh(Cancel As Boolean) MsgBox "BeforeRefresh" End Sub Private Sub qt_AfterRefresh(ByVal Success As Boolean) MsgBox "AfterRefresh" End Sub 最后,我创build,初始化并存储了一个TestClass的实例。 右键单击“ Destination表并select“刷新”可获得预期的结果:MsgBox显示两次,确认触发“事件之前”和“事件之后刷新”事件。 但是,单击function区上的“全部刷新”将只显示一个MsgBox:AfterRefresh一个。 我已经准备了一个最小的Excel文件来重现所描述的行为。 它可以在这里下载: RefreshAllNotTriggeringBeforeRefresh.xlsm […]

在C#中的Excel自动填充事件

我正在使用C#编写一个Excel加载项,并且需要能够告诉用户何时自动填充单元格。 我怎样才能抓住自动填充事件?

VBA – 在mousemove事件中获取标签的名称

我有以下问题。 我的工作表中有很多以结构化方式命名的标签(Label1,Label2,…,Label9)和分配给它们的mousemove事件macros。 我想在表格A1:A9中获得第i个值,其中“i”是当前“触摸”的标签的数量。 是否有一个简单的方法来获取标签的名称在mouse_move事件(或一些其他事件,如Change_event)。 这看起来是相似的 Private Sub Label47_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim label_name as String Dim which_one as Integer Dim val as Integer label_name = "something like ActiveLabel.Name" which_one = CInt(right(label_name,1)) val = Cells(which_one,1).Value rest code…. End Sub 谢谢你的帮助

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

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