Tag: 事件处理

删除行时Excel Worksheet_Change事件触发

我有一个Excel工作表与一些VBA代码,当我改变一个特定的单元格,它会自动将今天的date设置到旁边的单元格。 这一切都很好,但是当我删除整个行上的特定单元格时,它会自动更改date到今天的date。 这是我用来自动更改单元格的代码: Private Sub Worksheet_Change(ByVal Target As Range) Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer Set WorkRng = Intersect(Application.Sheets("Example").Range("H10: H306, M10: M306, R10: R306, W10: W306, AB10: AB306, AG10: AG306"), Target) xOffsetColumn = 1 If Not WorkRng Is Nothing Then Application.EnableEvents = False For Each Rng In WorkRng If […]

在Excel中捕获工作表取消保护事件

我有一个受保护的Excel工作表,没有密码。 我想要做的就是捕获一个用户不保护工作表的事件,这样我就可以生成一条消息(并且唠叨!)。 我可以为应用程序设置事件检查,以便在打开新的工作簿时等,但不能用于解除保护。 有没有人有一个想法?

Excelmacros4.0事件处理

按照这些步骤,您可以在工作簿中创build一个Excel 4.0macros: 右键单击Excel工作簿底部的工作表/选项卡(例如Sheet1 )。 点击Insert… selectMS Excel 4.0 Macro并点击OK 。 您将获得一个新的工作表“Macro1”,启用macros。 你如何在代码中处理此工作表的SheetSelectionChangeEvent事件? 我可以订阅和处理常规工作表( Sheet1 , Sheet2等)的这些事件,但对于Macro1表,这些常规事件不会被触发。 有任何想法吗?

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 有更好的解决方法吗?

将参数添加到工作表事件

我find了一个能很好地突出显示与选定单元格相对应的整行的macros(无论您select哪个单元格,macros是否运行,并且所有行均高亮显示)。 这个当前的迭代有一些缺点,我似乎无法find一个方法来制定参数,我想限制突出显示到特定数量的行。 有任何想法吗? Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Const cnNUMCOLS As Long = 512 Const cnHIGHLIGHTCOLOR As Long = 6 'default lt. yellow Static rOld As Range Static nColorIndices(1 To cnNUMCOLS) As Long Dim i As Long If Not rOld Is Nothing Then 'Restore color indices With rOld.Cells If .Row = ActiveCell.Row Then Exit […]

防止子运行

在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 […]

Sub App_WorkbookBeforeSave不适用于VBA加载项/ Excel 2010

我将在保存工作簿之前显示一个MessageBox 。 我已经尝试过事件处理程序Sub App_WorkbookBeforeSave()和Sub Workbook_BeforeSave但两者都不起作用! 为什么? 有我的小插件: Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, _ ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "Good bye! Data is save." End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "Good bye! Data is save." End Sub UPDATE 我把它们放在属于Microsoft Excel Objects ThisWorkbook模块中

VBA触发macros单元格值更改

这应该很简单。 当一个单元格的值发生变化时,我想触发一些VBA代码。 单元格(D3)是从另外两个单元格计算的=B3*C3 。 我尝试了两种方法: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target.Row = 3 Then MsgBox "There was a change in cell D3" End If End Sub 由于单元格是一个计算,所以当值发生变化时不会触发,因为计算保持不变。 我也试过: Private Sub Worksheet_Calculate() MsgBox "There was a calculation" End Sub 但是我在表单上有多个计算,并且会多次触发。 有没有一种方法可以确定在计算事件中更改了哪个计算? 或者有另一种方式可以跟踪D3的变化?

由DDE更新触发的基于公式的单元更改的时间戳

我有列A中的数据,并希望A列中的数据更改时在列B中的时间戳。 现在,这里是棘手的部分:列A的值是基于公式的,从一个Vlookup表。 这个Vlookup表有dde链接。 所以没有人工input电子表格。 下面的代码运行良好,如果你必须input数据到列A,但不会为上述scernario或甚至如果你说。 单元格A1 = C1+D1 。 通过改变C1或D1将改变A1 …但是这不会启动macros。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Cells(Target.Row, 2).Value = Now End If End Sub

你如何testing在Excel中的范围内有单元格?

我在Worksheet_Change事件的Excel / VBA中发现了一个问题。 我需要将Target.Dependents分配给Range,但是如果没有依赖项,则会引发错误。 我试过testingTarget.Dependents.Cells.Count,但没有奏效。 有任何想法吗? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 OR Target.Dependents.Cells.Count = 0 Then Exit Sub Dim TestRange As Range Set TestRange = Target.Dependents 我也试过“Target.Dependents是Nothing”。