获取Excel异常“无法设置Range类的NumberFormat属性”

时间:2015-04-10 13:36:00

标签: c# excel vsto

当我通过VSTO

双击excel中的一个单元格时出现此异常

我的代码如下:

Worksheet worksheet = (Worksheet)Globals.ThisAddIn.Application.ActiveSheet;
Range range = worksheet.Range[entry.Key, System.Type.Missing];
range.NumberFormat = "DD-MMM-YYYY";

当我使用Tab键或任何箭头键

时,它非常有效

任何意见都将受到赞赏。

2 个答案:

答案 0 :(得分:-1)

可能是因为在双击单元格时,单元格处于编辑状态,在编辑状态下无法更改单元格/范围。

使用工作表选择事件是否无法达到您想要的效果?只要工作表上的选择发生变化,就会触发该事件?

请注意,已经点击具有焦点的单元格不会触发此事件。

https://msdn.microsoft.com/en-us/library/office/ff194470.aspx

答案 1 :(得分:-1)

  

当我通过VSTO

双击excel中的一个单元格时出现此异常

您在代码中遇到异常,因为Excel处于编辑模式。使用以下代码以编程方式确定状态:

Private Function IsEditing () As Boolean
    Dim cBars As Office.CommandBars = ExcelApp.CommandBars
    Dim result As Boolean = Not cBars.GetEnabledMso("FileNewDefault")
    Marshal.ReleaseComObject(cBars)
    Return result
End Function

有关详细信息,请参阅How to check programmatically if the user is editing an Excel cell