解决方案 »

  1.   

    m_xlSheet是怎么设置的,把代码贴出来。
      

  2.   

    Option ExplicitPublic m_xlApp As Excel.Application
    Public m_xlSheet As Excel.Worksheet
    Public m_xlBook As Excel.WorkbookPublic Function ForceExcelProcess(Conductor As Lead, CondOpMode() As OperatingCondition, ControlOPMode() As ControlOPModeResult, ControlOPModeNumber As Integer, Result() As SagForceResult, Result100() As Sag100Result, HiTemp100 As Integer, LowTemp100 As Integer, TempDrop100 As Integer)'感觉对于VB操作excel还是非常的生疏,需要用一本书好好研究一下'---打开excel--------------------
        Set m_xlApp = CreateObject("Excel.Application")
        
        Set m_xlBook = m_xlApp.Workbooks.Add
        Set m_xlSheet = m_xlBook.Worksheets(1)    m_xlApp.Visible = True
    '-------------------------------'-----写标题--------------------
        m_xlSheet.Cells(1, 5).Value = Conductor.Name &
        m_xlSheet.Cells(1, 5).Font.Size = 10
    '------------------------------
    Dim i As Integer
    Dim k As Integer
    Dim Page3Length As IntegerPage3Length = 3 '加3行空白行
    '====================计算书第三页写完,开始第四页,如何分页,要考虑====================================Dim Page4Length As Integer
    Dim Page5Length As Integer'-----写标题--------------------
        m_xlSheet.Cells(Page3Length + 1, 5).Value = Conductor.Name
        m_xlSheet.Cells(Page3Length + 1, 5).Font.Size = 10'----各个温度的计算结果陆续写出来---
    Dim TCount As Integer    TCount = Int((HiTemp100 - LowTemp100) / 5) + 1     '---第一页----------
        m_xlSheet.Cells(Page3Length + 3, 2).Value = "项目"
        m_xlSheet.Cells(Page3Length + 4, 2).Value = "距离"
        
        For i = 1 To Result100(1).SpanCount - 1
         m_xlSheet.Cells(Page3Length + 4 + i, 2).Value = Format(Str(Result100(1).Span(i)), "##0.0")
        Next i
    '这个地方有的时候对有的时候错!
        m_xlSheet.Range(Cells(Page3Length + 3, 3), Cells(Page3Length + 3, 11)).Merge (False)
        m_xlSheet.Cells(Page3Length + 3, 3).Value = "气 温(℃)"
        
         For k = 1 To 9
            m_xlSheet.Cells(Page3Length + 4, k + 2).Value = Result100(k).CalTemperature                For i = 1 To Result100(k).SpanCount - 1
            m_xlSheet.Cells(Page3Length + 4 + i, k + 2) = Format(Str(Result100(k).Sag(i)), "##0.0000")
            Next i     Next k
        
        '-----设置规格这个表的格式,字体大小等--------------------
        Dim kcount As Integer    kcount = Result100(1).SpanCount    m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10    
        m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).Borders.LineStyle = xlContinuous
        m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).Borders.Weight = xlThin
        m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).HorizontalAlignment = xlCenter   Page4Length = Page3Length + 3 + Result100(1).SpanCount + 3 '加3行空白行    m_xlSheet.Range("A1", "L1").ColumnWidth = 11 '计算书列的宽度'Why??  第一遍运行始终是对的,后面就会出错
    '网上有和我一样的问题,说是先定义,再保存????
    '即使把m_xlSheet.Range(Cells(Page3Length + 3, 3), Cells(Page3Length + 3, 11)).Merge (False) '注释掉,下面有range的语句还是出错!!看来是range而不是merge的问题End Function
      

  3.   

    就是标红笔的,上面应该是2句分开的,如下,贴的时候在一行了:
        m_xlSheet.Range(Cells(Page3Length + 3, 3), Cells(Page3Length + 3, 11)).Merge (False) 
            m_xlSheet.Cells(Page3Length + 3, 3).Value = "气 温(℃)"我把   m_xlSheet.Range(Cells(Page3Length + 3, 3), Cells(Page3Length + 3, 11)).Merge (False) 注释掉,也是同样的问题,第一遍通过,打出excel计算书,但是第二遍运行的时候,就会指向下一个含有range的语句,即
    m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10    
      

  4.   

    恩,还是会报错,实际上,我把 m_xlSheet.Range(Cells(Page3Length + 3, 3), Cells(Page3Length + 3, 11)).Merge (False) 这句注释掉,即我不合并单元格了,
    同样的报错指向 m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10  也就是说,只要是range的语句都会报错,除非把range的命令全部注释掉,就不会有这个问题了!应该是range的问题吧?大神帮我看看啊!
      

  5.   

    在你的cells前面加上m_xlSheet.变成这样:
     m_xlSheet.Range(m_xlSheet.Cells(Page3Length + 3, 2), m_xlSheet.Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10  
      

  6.   

    回复于: 2015-03-05 22:28:47 
    在你的cells前面加上m_xlSheet.变成这样:
     m_xlSheet.Range(m_xlSheet.Cells(Page3Length + 3, 2), m_xlSheet.Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10  恩,是的是的!这样就没有问题了!运行得很好了!
    为什么会这样啊???
      

  7.   

    如果不加m_xlSheet,那cells是谁的呢?这就和你那range一样。