【问题标题】:Restrict paste (Ctrl-V) in Excel cell from VB.NET在 VB.NET 的 Excel 单元格中限制粘贴 (Ctrl-V)
【发布时间】:2012-01-27 14:06:46
【问题描述】:

我有一个场景通过 VB.NET 使用日期单元格生成和验证 excel 单元格值,当我在单元格中键入一个值时一切正常,但是当我在单元格中复制粘贴它接受的任何字符串值时从不验证。

问题:我想从 VB.NET 限制单元格中的粘贴 (Ctrl-V)。我怎样才能做到这一点?

这是我的代码:

    worksheet.Range(DateRange).Validation.Delete()
    worksheet.Range(DateRange).Validation
        .Add(ValidationType.Date, ValidationAlertStyle.Stop, 
            ValidationOperator.Greater, dt, Nothing)
    worksheet.Range(DateRange).NumberFormat = "mm/dd/yyyy"
    worksheet.Range(DateRange).Validation.IgnoreBlank = True
    worksheet.Range(DateRange).Validation.InputTitle = "Excel Validation"
    worksheet.Range(DateRange).Validation.ErrorTitle = "Error in Date"

【问题讨论】:

  • 副本的来源是什么?如果这些是单元格,则可能是您在粘贴日期时删除了验证。
  • 嗨 Vash,副本的来源可以是除日期以外的任何内容(字符串),该单元格接受不是日期的值。所以我认为我们应该限制该单元格中的复制粘贴。请给我一些关于如何使用 VB.NET 做到这一点的想法。
  • @Ramesh。我很确定在 Excel 中限制复制和粘贴但仍允许编辑的唯一方法是通过宏捕获它。正如 Luke 在下面显示的那样,您可以编写宏来执行此操作。要将这些宏放入工作簿,您可以使用 this tutorial 帮助您通过 VB.NET 编写它们。

标签: asp.net vb.net excel


【解决方案1】:

这是我发现的东西

Private Sub Workbook_Activate()
Application.CutCopyMode = False
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_Deactivate()
Application.CellDragAndDrop = True
Application.OnKey "^c"
Application.CutCopyMode = False
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CellDragAndDrop = True
Application.OnKey "^c"
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "Right click menu deactivated." & vbCrLf & _
"Cannot copy or ''drag & drop''.", 16, "For this workbook:"
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Application.CutCopyMode = False
End Sub

来源:http://www.mrexcel.com/forum/showthread.php?t=84495

【讨论】:

  • 嗨 Luke,我想这是 VB 宏代码,我使用的是 VB.Net,所以我无法通过 vb.net 编写这些 excel 事件。如果我错了,请纠正我。
猜你喜欢
  • 1970-01-01
  • 2022-06-17
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 2020-11-11
  • 2021-06-21
相关资源
最近更新 更多