Tag: 事件

只有在手动更改时才为其他单元格运行不同的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运行?

Excel VBA:如何创build一个全局事件Global_beforsave()

我需要检测每个文件(* .xls,* .xlsx,* .xlsb,…)在保存之前在excel中打开许多属性。 在* .xlsm文件中,我在此工作簿中包含Workbook_BeforeSave(),但仅适用于此工作簿。 我希望在* .xlam文件中包含全局事件,但是我不知道该怎么做。

从模块中为另一个WB添加事件

这个问题可能已经被回答了,但我似乎找不到我正在寻找的答案。 我正在创build一个模块,当它被调用时会创build一个新的工作簿并将信息从这个工作簿传输到新的工作簿。 我想使用这个macros添加一个新的工作簿,但没有运气。 目前我有以下几点: Public Sub TemplateCreate() Dim NewBook as Workbook set NewBook = addnew End Sub Function Addnew() as Object Application.SheetsInNewWorkbook = 2 Application.EnableEvents = True Set AddNew = Workbooks.Add With AddNew .SaveAs Filename:="test.xls" End With End function 上面的代码工作得很好,但是当添加昏暗的事件作为工作簿Newbook我收到一个错误:只在对象模块有效。 有一个类似的代码行,使其工作的模块? 我试图添加下面的事件function,没有运气使其工作: Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Tried changing between target and thisWB If […]

Excel对象模型中触发了哪些事件

VS2008,.NET35,Excel AddIn,Excel-DNA,NetOffice为了禁用/启用function区button,我捕获了3个事件(例如,如果用户select一个单元格,单元格的公式是MyUDF1,那么button/菜单项不相关到MyUDF1将变灰。) XLApp.SheetSelectionChangeEvent += ApplicationSheetSelectionChange; XLApp.SheetDeactivateEvent += SheetDeactivatedEvent; XLApp.SheetCalculateEvent += ApplicationSheetCalculate; 然而,当用户复制整个工作表并粘贴到另一个工作表,或者当用户select列并进行自动调整,Excel似乎挂起2-3分钟,这是一个巨大的性能打击任何人都知道一个解决scheme? 非常感谢! 您好,如果有一些工具可以在客户端PC上运行,以便在复制/粘贴时发现Excel中发生了什么事情? 我尝试过程监视器,但它似乎不够详细,我不能从那里得到任何有用的信息。

SaveCopyAs方法不起作用

(我是英文的一周,所以起初不好意思解释:D) 我通过我的应用程序打开一个excel文件。 我有一个Excel中的Addd-In和一个function区中的button来保存button的Click事件的代码(确切地说是一个保存button所做的保存操作)在这里: Globals.ThisAddIn.Application.ActiveWorkbook.Save(); 在我的应用程序中,我将一个方法(称为WorkbookBeforeSave)分配给工作簿的“BeforeSave”事件处理程序,在我的自定义目录中手动保存工作簿。 private void WorkbookBeforeSave(bool saveasui, ref bool cancel) { _excelApp.EnableEvents = false;//_excelApp is my Excel Application if (!_excelWorkbook.Saved)//_excelWorkbook is Active Excel Workbook { _excelWorkbook.SaveCopyAs(_savedFilePath);//_savedFilePath is my custom directory _excelWorkbook.Saved = true; } cancel = true; _excelApp.EnableEvents = true; } 问题是当我单击原始Excel保存button“SaveCopyAs”方法正常工作,但点击我的自定义保存button“SaveCopyAs”方法不起作用。 (没有抛出exception,所有代码编译和debugging)

Excel添加事件在打开新工作表后停止触发

我正在开发一个Excel插件。当我的function区加载时,我添加一个单元格上下文菜单,并在其中包含一个button。 我附加一个处理程序到button的点击事件来select一个文件。 当我运行Excel时,它可以正常工作。 但是,如果我打开一个新的表,当我点击时没有任何反应。 为什么? 我的色带加载function: private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { Helper.SetVar(Globals.ThisAddIn.Application, Globals.Factory); } 我有几个添加在该参考工具箱的DLL。 所以这里是我的工具箱dll的公共静态助手类中的setVar函数: public static void SetVar(Excel.Application appSource, Microsoft.Office.Tools.Excel.ApplicationFactory FactorySource) { if(path=="") { string fullPath = typeof(Helper).Assembly.CodeBase; string theDirectory = Path.GetDirectoryName(fullPath); path = new Uri(theDirectory).LocalPath; } if (app == null) app = appSource; if (Factory == null) Factory = FactorySource; […]

无法获取由服务器注册的值

我正在尝试在Excel中创build一个名为SpectrumLive的共享交易网站的VBA界面。 我可以在网站上填写相关表格中购买的股票数量。 但是,当我点击“下订单”button时,它会记住我input的上一个手动值,而不是VBAinput的值。 这就像我需要提出一个事件或类似的东西,让服务器端注册的价值。 该字段看起来像带有可编辑文本字段的combobox。 您可以通过selectcombobox控件中的小箭头来select预定义的值。 然而,脚本直接将值input到文本字段(就像我也可以手动执行)。 我一直在研究这个问题已经有一段时间了,我已经没有想法了。 我使用的VBA是: theDocument.getElementsByName(“ordertype”)。Item(i).value =“88” 将股份数量设定为88。 我曾尝试通过以下方式触发OnChange事件: item(i).FireEvent(“onchange”) 但没有运气。 该页面的特定部分的HTML代码如下所示: <div id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow" class="formrow"> <div id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_error" class="error_field"> <span class="inline amount"> <label class="label" title="Quantity">Quantity:</label> <div class="amount_type input selector" style="display:none;" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$ctl00"> <span id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_amount" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount"> <div id="AmountSelectorContainer"> <span id="MenuMgr_WM_view4_widgetbfcca409xc930x42d5x8d00x04a83ed68e5f_ordertab_amountrow_amount_AmountSelectorControl" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount$AmountSelectorControl"> <div id="AmountSelectorDropDownList" class="left input selector" name="MenuMgr$WM_view4$widgetbfcca409xc930x42d5x8d00x04a83ed68e5f$ordertab$amountrow$amount$AmountSelectorControl$AmountSelectorDropDownList"> **<input class="inp aright" type="text" value="" name="ordertype" title="">** […]

Excel下拉从C#项目创build绑定更改事件

我有一个交stream#项目,创build一个Excel工作簿和工作表,并与数据填充工作表。 我可以添加一个下拉列表,并在双击单元格时加载数据。 我使用的下拉列表是Excel中提供的下拉列表(Microsoft.Office.Interop.Excel)在Excel中的Excel.DropDowns xlDropDowns Excel.DropDown xlDropDown 我的问题是我如何将一个事件绑定到下拉菜单像一个selectedChange或更改,所以我可以看到在ac#函数中select的值。 我见过一些人谈论macros,如果这是必要的,那么我怎样才能拿起macros函数中的值,并将其返回给C#。

如何以编程方式响应各种Excel图表变化?

Excel具有VBA事件处理程序,用于在更改图表大小( Resize )或其中一个系列( SeriesChange )或其使用的数据( Calculate ),但似乎不适用于任何其他types的更改,例如: 轴设置 标签文本 传奇定位 embedded到工作表中的图表更改不会触发工作表的“ Change事件。 有什么办法来捕捉这些事件?

ActiveX电子表格控件禁用了workbook_open事件

我已经将ActiveX电子表格控件插入到Excel VBA表单中。 我已经在ThisWorkbook.Workbook_Open()事件中编写了一个过程,并且在窗体上存在ActiveX电子表格控件时,将不会在打开工作簿时执行。 为了简化问题,我有: 创build了一个新的工作簿。 添加了一个空白表单“UserForm1”。 添加一个ActiveX电子表格控件到“UserForm1”,“Spreadsheet1”。 在ThisWorkbook中,添加Private Workbook_Open()事件:打开工作簿时不执行Workbook_Open事件。 从表单中删除电子表格控件时,workbook_open事件正常执行。 在这两种情况下都启用macros。 其他macros手动调用时成功执行。 如何让workbook_open事件在VBA表单上的ActiveX控件上执行? Private Sub Workbook_Open() MsgBox "Workbook_Open event has executed." End Sub 更新:当安全设置为“禁用带通知的所有macros”并且文件在受保护的视图中第一次打开时,Workbook_Open()事件被触发。 随后打开文件,事件不被解雇。