Tag: 事件

当受保护的单元格被点击时显示警告消息

目前我有这个代码。 在Column A ,我有一个“是”或“否”的select。 Private Sub worksheet_change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then ActiveSheet.Unprotect If Target = "YES" Then 'Column B to S For i = 1 To 18 With Target.Offset(0, i) .Locked = False .FormatConditions.Add Type:=xlExpression, Formula1:="=ISBLANK(" & Target.Offset(0, i).Address & ")" With .FormatConditions(.FormatConditions.Count) .SetFirstPriority .Interior.ColorIndex = 4 End With […]

在locking的工作表中更改未locking的单元格的颜色

我正在处理一个奇怪的问题。 我的代码创build一个locking工作表,有几个解锁的单元格。 该代码还创build一个Worksheet_Change子项,更改编辑的单元格的内部颜色。 它工作正常,但是当我closures文件并再次打开它时,虽然解锁的单元格是可编辑的,但Worksheet_Change子项会给出更改颜色的错误: “应用程序定义或对象定义的错误”。 当我试图改变颜色的子值,它确实工作。 locking表单: ThisWorkbook.Sheets(atar).Cells(exlRow, 7).Locked = False Worksheets(atar).Protect UserInterfaceOnly:=True, Password:="shani" 'lock sheet 创build子: Private Sub Worksheet_Change(ByVal Target As Excel.Range) Target.Interior.Color = RGB(0, 255, 0) End Sub

如何将目标传递给Excel事件中的另一个macros?

如何将目标传递给Excel事件中的另一个macros? 只是为了优雅的目的,我想使用下面的结构,现在不工作。 Private Sub Worksheet_Change(ByVal Target As Range) GoToAnotherMacro(Target) End Sub Sub GoToAnotherMacro(Target) 'here my code where I can use Target ie: MsgBox "value: " & Target.Value End Sub

数据validationselect后运行事件macros

我在名为report的工作表上build立了一个数据validation列表,每当我从列表中select一个项目时,我需要运行一个macros。 现在我有下面的代码,但它不工作。 它在VBA中运行,但是当我在工作表中selectItem时,它不会运行,看起来像我没有引用macros Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(True, True) = "$B$3" Then Select Case Target Case "ABCP" Call Macro1 Case "Accounting Policy" Call Macro2 Case Else 'Do Nothing End Select End If End Sub

VBA – 多个checkbox分配给同一个macros,如何确定哪个checkbox触发事件?

我在Excel表格上有20个checkbox。 我想要检测一个checkbox被点击,并单击哪个checkbox。 我知道我可以为每个checkbox做一个方法,但这绝对不是最好的方法。 所以我把每个checkbox分配给同一个macros: Public Sub fieldCheck_Click() MsgBox "checkbox clicked" End Sub 我怎样才能确定哪个checkbox激发了事件?

Worksheet_BeforeDoubleClick进行select

我有下面的代码不适用于select: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim Rng1 As Range Dim I As Integer If Selection.Count > 1 Then For Each cell In Selection If I = 0 Then Set Rng1 = Range(cell.Address) Else Set Rng1 = Union(Range(cell.Address), Rng1) End If I = I + 1 Next cell MsgBox "You have […]

通过macros的事件代码

我有很多Excel工作表(> 700,太多手工更改)和一个macrosxlm,其中包含所有工作表的大部分macros。 我有函数循环遍历所有表单,并执行每个macros中的macros。 由于一个请求,我需要通过中央macros添加一个Eventhandler。 由于我对VBA的理解是事件处理程序只能放在工作表本身的工作表代码文件中,所以我现在不需要做下一步的工作。 我希望有办法做这样的事情?

Excel VBAcomboboxOnExit事件

我有这个代码: Private Sub TempCombo_Exit(Cancel As Integer) MsgBox "test" End Sub 但是当我从TempCombo退出时,什么都没有发生? 怎么了? Obs:我需要在失去焦点时进行validation

工作表打开时,Worksheet_Activate不会触发

前两天我的代码来填充我的Excel表单中的ActiveXcombobox停止运作,当我打开文档。 自从我发现Worksheet_Activate()不再触发我打开工作表时。 现在,即使我只用下面的代码在Sheet 1中创build了一个简单的工作簿,它在打开工作簿时也不会触发。 Private Sub Worksheet_Activate() MsgBox ("Worksheet has been activated") End Sub 但是,如果我点击另一个选项卡,并返回到包含代码的工作表,它会触发。 我尝试添加Application.EnableEvents = True和工作表(“Sheet1”),激活到Workbook_Open(这确实触发),但仍然没有运气。 我们正在运行Excel 2010,同样的问题也发生在我的同事的机器上。 有任何想法吗?

保存工作簿任何工作表中上次更改/修改的代码不准确

我以前曾经提出一个问题,我一直在使用上次保存的代码在每个代码表上注册更改。 进行更改的时间将被logging在索引页上,以显示每张表的最后修改时间。 然而,代码logging了我访问表格的时间,而不是修改,因此使其不准确。 有没有其他更有效率和准确的解决scheme来注册对表单所做的更改而不是访问? Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range) If Sh.Name = "Index" Then Exit Sub i = Sh.Index With Sheets("Index") .Cells(i + 2, 1) = Sh.Name .Cells(i + 2, 2) = Now End With End Sub 这是代码