none
excel, vb.net 2010: 不能设置类Border的LineStyle属性 RRS feed

  • 问题

  • 各位好,我正在用vb.net 2010开发excel2007插件,其中在写单元格条件格式的时候遇到了“COMException was unhandled by user code:不能设置类Border的LineStyle属性”。代码如下

    Dim EXapp as Excel.Application = GetObject(,"Excel.Application")
    Dim EXrng as Excel.Range
    EXrng = EXapp.Selection
    Dim EXfco as Excel.FormatCondition
    EXfco = EXrng.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1:="=$A$1=0")
    With EXfco.Borders(Excel.XlBordersIndex.xlEdgeBottom)
        .LineStyle = Excel.XlLineStyle.xlDash
    End With

    程序卡在了LineStyle上面。我试过换成.Color,没有问题。
    同时我留意到如果把倒数第三行去掉(Excel.XlBordersIndex.xlEdgeBottom),LineStyle设置没有问题,不过就是整个单元格都有边框了,我只想有底下的框。
    然后如果不在FormatCondition,就是说随便拿个单元格来设置LineStyle,比如说直接
    EXrng.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlDash
    貌似也没有问题。

    我觉得问题出在条件格式,怎么办?求教。谢谢

    • 已编辑 sslx 2011年2月28日 7:27 加入COMException was unhandled by user code
    2011年2月28日 7:22

答案

  • 宏的语法是vba,跟vb不一样。

    那个,我找到了解决办法了。

    应该是软件本身的问题。VB2010在XlBordersIndex中关于底边框线只有xlEdgeBottom=9,可以使用旧版vba的xlBottom=-4107代替。

    使用如下代码测试成功:

     With EXfco.Borders(-4107)
        .LineStyle = Excel.XlLineStyle.xlDash
    End With

    因为vb2010中XlBordersIndex后只能跟xlEdgeBottom,所以只能直接用-4107

    2011年2月28日 7:41

全部回复

  • 你直接录个宏看看是怎么写的
    http://feiyun0112.cnblogs.com/
    2011年2月28日 7:37
    版主
  • 宏的语法是vba,跟vb不一样。

    那个,我找到了解决办法了。

    应该是软件本身的问题。VB2010在XlBordersIndex中关于底边框线只有xlEdgeBottom=9,可以使用旧版vba的xlBottom=-4107代替。

    使用如下代码测试成功:

     With EXfco.Borders(-4107)
        .LineStyle = Excel.XlLineStyle.xlDash
    End With

    因为vb2010中XlBordersIndex后只能跟xlEdgeBottom,所以只能直接用-4107

    2011年2月28日 7:41