【问题标题】:Why does a macro assigned to a cell fail?为什么分配给单元的宏会失败?
【发布时间】:2019-05-28 11:29:58
【问题描述】:

我有一个宏分配给单击后执行的单元格。该宏涉及 SAP 脚本,如果被中断(通过 CTRL+DEL+ALT),也会导致我之前可单击的单元格停止工作。

我可以通过 Developer 运行宏,但单元格不工作。请注意,下面提供的代码粘贴在可点击单元格所在的工作表中,而不是在 ThisWorkbook 中。

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal target As Range)

   If Selection.CountLarge = 1 Then

   If Not Intersect(target, Range("A10")) Is Nothing Then
       Call FolderPicker
   End If

End Sub

任何想法可能导致问题?

【问题讨论】:

  • 你有一个没有 End If 的 if 语句来关闭它
  • 除了@Tim 所说的 - 您是否在代码中的任何位置禁用事件?
  • 抱歉 End If 部分,它在复制/粘贴时被切断了。换句话说,即使我们暂时忘记了 SAP 脚本,如果我运行或单击 FolderPicker 单元格,而不是选择一个文件夹,我选择通过取消来停止该过程,我将无法通过单击再次运行它单元格,直到我重新打开 Excel 文件(仅通过在 Developer 中运行代码)。我得到的错误是无效的过程调用或参数,但我想这是一个非常普遍的警告。

标签: excel vba sap


【解决方案1】:

您需要关闭所有 if 语句。

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal target As Range)

   If Selection.CountLarge = 1 Then

      If Not Intersect(target, Range("A10")) Is Nothing Then
       Call FolderPicker
      End If
   End If

End Sub

【讨论】:

  • 感谢 QuickSilver,我在复制/粘贴时以某种方式切断了 End If 部分。
【解决方案2】:

你可以使用:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'Check count how many cells affected to avoid errors
    If Target.Count = 1 Then

        If Not Intersect(Target, Range("A10")) Is Nothing Then
            Application.EnableEvents = False 'Disable events to avoid pointless code trigger
                Call FolderPicker
            Application.EnableEvents = True
        End If

    End If

End Sub

【讨论】:

  • 感谢错误 1004,我已经修改了代码,但我相信是其他原因导致了这里的问题。我已经尝试在上面的评论中改写。
  • 你能找到解决办法吗?
  • 还没有,我还在测试中,如果我弄明白了,我会在这里报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多