2012-01-27 144 views
2

我有一个场景来生成和验证excel单元格值与日期单元格通过VB.NET,一切正常,当我在单元格中键入一个值,但何时我在单元格中复制粘贴任何字符串值并且永远不会验证。限制在VB.NET中的Excel单元格粘贴(Ctrl-V)

问题:我想限制从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" 
+0

什么是副本的来源?如果这些是单元格,则可能是在粘贴日期时删除了验证。 – 2012-01-27 14:11:13

+0

您好Vash,复制的来源可以是日期以外的任何东西(字符串),该单元接受该值不是日期。所以我正在扼杀我们应该限制该单元格中的复制粘贴。请给我一些关于如何用VB.NET做到这一点的想法。 – Ramesh 2012-01-30 07:39:41

+0

@Ramesh。我敢肯定,限制在Excel中复制和粘贴但仍允许编辑的唯一方法是通过宏来捕获它。正如下面的卢克所示,你可以编写宏来完成它。要将这些宏导入工作簿,可以使用[本教程](http://support.microsoft.com/kb/303871)帮助您通过VB.NET编写它们。 – 2012-05-08 00:44:24

回答

0

这是一件香港专业教育学院发现

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

+0

嗨卢克,我认为这是VB宏代码,我使用VB.Net,所以我不能通过vb.net写这些excel事件。纠正我,如果我错了。 – Ramesh 2012-01-30 07:41:35

+0

它似乎是VBA代码,我需要它在Vb.Net中做 – Ramesh 2012-01-30 08:46:16

相关问题