Tag: 事件

我可以通过单击button来强制执行Excel“Workbook_open”事件吗?

我知道Workbook_open事件的主题上有许multithreading并不总是触发。 似乎禁用UDF可能会像数字证书一样工作。 请参阅Excel工作簿打开事件macros不总是运行 但为什么要添加数字证书有帮助? 作为一个替代解决scheme,我想知道是否可能有办法强制Workbook_open事件通过点击button触发? 这样,当初始打开事件失败时,用户可以刷新屏幕combobox等。 我已经尝试添加Workbook_open作为button单击的一部分,但得到"Sub or Function not defined"错误。 我想这个事件不属于“ThisWorkbook”对象! ThisWorkbook.RefreshAll不起作用。 注意:我已经在Workbook_open事件的combobox中添加了额外的编码项目,所以我期待这些出现,如果我可以刷新工作!

Excel加载项检测名称工作表是否存在,如果是的话运行Marco

通过我的插件我试图检测是一个名为工作表叫VaR存在,如果是这样运行一个macros。 在我的插件ThisWorksheet对象中,我已经包含了代码 Private Sub Workbook_Open() ActiveWorkbook.RefreshAll Application.Wait (Now + TimeValue("0:00:05")) Application.Run ("Macro") End Sub 它不工作,因为我打开一个电子表格,我知道我正在寻找工作表,例如“VAR”不会加载之前加载,所以没有find它。 这个行动是可能的吗? 我只想要打开包含名为“VaR”的工作表的工作簿的用户触发事件。 亲切的问候。

vba listbox事件触发两次

我正试图让这个在excel用户表单中工作。 在列表框中select一个值时,它的变化事件被调用两次。 即使放置了旗帜,也无法绕过它。 不知道为什么更改事件被调用两次。 谷歌search之后,像控制得到焦点的变化事件被称为接缝。 下面是代码。 Public eventsOFF As Boolean Public ctr As Integer Private Sub ListBox1_Change() Dim tmp As String, sel As Variant, s As Variant If eventsOFF Then Exit Sub eventsOFF = True For i = 0 To ListBox1.ListCount – 1 If ListBox1.Selected(i) Then tmp = tmp & ListBox1.List(i) & "," Next ListBox1.Clear […]

如果事件已经被禁用,是否可以在事件中启用VBA事件?

我怀疑这个答案是否定的,因为这是一个循环论证 但… 我将软件包中的报告直接导出到现有的Excel工作簿中。 该软件包在Excel中创build一个新工作表并填充工作表。 默认情况下,新工作表称为Sheet1。 这是一个大的报告,在Excel工作簿中有一个Workbook_SheetChange事件。 导出的报表的每个单元格都在Excel中单独更新,因此每个单元格都运行SheetChange事件。 这增加了10倍的import时间。 我可以添加到SheetChange事件,如下所示 如果Sh.name =“Sheet1”然后退出子 这加速了美丽的import过程,但是当然不会有事件再次发生,因为我禁用了它们。 所以工作簿macros是无法使用的。 我希望能够添加application.enableEvents = true当Sheet1工作表被取消激活,但当然这不会触发,因为事件已被禁用。 我可以添加一个必须按下的button,通过模块sub触发重新启用,但是用户不得不这么做。 还有其他一些事件可能需要在用户按下之前触发,以免丢失。 因此,我的愚蠢问题是 – 是否有另一种重新启用事件的方式? 我可以,我想,在每个工作表中都有一个Worksheet_Change事件,而不是全局的Workbook_SheetChange事件,但是在我这样做之前我想问一下。 谢谢

如何使用Apache POI Event API读取特定列?

我想读取大xls或xlsx文件,即具有150,000行的70 MB文件。 我能够使用下面的代码加载整个excel文件,但我想要只提取特定的列像列C或其他列。 import java.io.InputStream; import java.util.Iterator; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xssf.eventusermodel.XSSFReader; import org.apache.poi.xssf.model.SharedStringsTable; import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; public class testclass { public void processOneSheet(String filename) throws Exception { OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader( pkg ); SharedStringsTable sst = r.getSharedStringsTable(); […]

单击指向另一个工作表的超链接时运行macros

我有两个工作表。 工作表1具有工作单的列表(A列),工作表2具有根据工作单购买的物料编号列表。 Sheet1中只有一个工单,但可以有多个物料编号链接到一个工单。 Sheet2看起来像这样; ColumnA ColumnB 订单1物料1 订单1物料2 订单2材料1 Order3材料1 我有一个超链接-vlookup组合,一旦在Sheet1中单击了一个工单号,它就会在Sheet2中列出相同的工单号。 现在,我想在单击超链接后运行macros,以便将Sheet2过滤为仅显示针对该工单所购买的材料。 我尝试了以下哪些不起作用。 请帮忙! Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) MsgBox "Run Code" End Sub

检测Excel上运行时添加的combobox上的事件

我在Excel中的VBA脚本有问题。 我所做的是基本上创build的button,当按下时将创build一个两个额外的combobox在一个表中的一组。 可以连续按下此button来添加更多combobox。 这些新创build的combobox将performance如下: 创build了2个combobox Combobox1将在控制表中加载一些列表 只要selectCombobox1中的项目,Combobox2将加载要添加到Combobox2中的项目列表 添加button的代码是这样的 Sub Add_Criteria() Dim controlNum As Integer Dim name1 As String Dim name2 As String Dim oOle1 As OLEObject Dim oOle2 As OLEObject Dim uniqueString As String Dim cb1 As Object controlNum = Sheets("Controls").Range("A16").Value 'adding Control Set oOle1 = Sheets("System").OLEObjects _ .Add(ClassType:="Forms.ComboBox.1", Left:=10, _ Top:=75 + (controlNum * […]

VB.NET中的应用程序级KeyUp / KeyDown事件(不是Windows窗体级别)

我正在创build一个用VB.NET编写的Excel加载项。 我想将KeyDown和KeyUp事件绑定到电子表格,以logging用户在导航电子表格时按下并释放箭头键。 理想情况下,这些事件将与原生的SheetActivate和SheetSelectionChange事件一起构build到Excel中。 唉,他们不是。 请注意,我对Windows窗体控件的KeyDown / KeyUp事件不感兴趣,因为我没有为此使用Windows窗体。 相反,我想在Excel应用程序,工作簿或工作表级别创build这些事件。

ListView _ItemClick事件不会触发(XL2007)

我有一个用户窗体包含一个标准的MSComctlLib v6(SP6)ListView控件,称为lvwTables 。 当用户看到它时,大约有二十左右的ListItems被添加到控件中。 我试图陷入_ItemClick事件使用我认为*是正确的forms,即 Private Sub lvwTables_ItemClick(ByVal Item As MSComctlLib.ListItem) 'blah End Sub 但事件子从未触发。 其他点击事件(如_Click和_ColumnClick )工作正常。 有没有人成功地把这个事件困在XL07中,如果是的话,你是怎么做到的? (*我指的是networking的信息,因为我没有访问控制的在线帮助或任何其他文件。)

只有在input特定input值后才运行VBA代码

我试图做一个macros,当有人在D20:D50的范围内键入“New Hire”时,它会调用一个macros。 我知道我可以做一个If但问题是,有很多细胞和大量的代码。 我需要使用ByVal Target As Range ,因为每当他们键入我想调用一个macros的单词。 If Target.Address = "$D$20" Then If Range("D20").Value = "New Hire" Then MsgBox "Please Fulfill the New Hire(s) Information in the following New Hire Sheet" & vbNewLine & "Important Note" & vbNewLine & "Include the New Employee's ID and Bank documentation with Account Number information" Call NewHireForm ElseIf […]