解决方案 »
- 如何读取另一个进程的全部内存?高手来
- mshflexgrid控件能否显示check按钮那个打勾的功能?我用list只能是一列。如果实现一行多列能勾选?
- 大家给出出主意!(方案确定)
- 请问如何给动态添加的控件数组添加事件处理函数
- unrecognized database format??
- 一个小问题!
- 如何将TYPE类型的变量在类模块中作为参数传递
- 如果让frmToolbar不得到焦点?
- 怎样在一个枝叶茂盛的treeview中快速定位要找的node?
- 各位有什么好用的函数、子程序请贴出来,300分不够再加
- 为什么用dir枚举文件夹下的文件到999.htm就停止了, 1000以上的它就不枚举了?
- access sql求助,急!!!!!!在线等!!!!!!
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
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
同样的报错指向 m_xlSheet.Range(Cells(Page3Length + 3, 2), Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10 也就是说,只要是range的语句都会报错,除非把range的命令全部注释掉,就不会有这个问题了!应该是range的问题吧?大神帮我看看啊!
m_xlSheet.Range(m_xlSheet.Cells(Page3Length + 3, 2), m_xlSheet.Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10
在你的cells前面加上m_xlSheet.变成这样:
m_xlSheet.Range(m_xlSheet.Cells(Page3Length + 3, 2), m_xlSheet.Cells(Page3Length + 3 + kcount, 11)).Font.Size = 10 恩,是的是的!这样就没有问题了!运行得很好了!
为什么会这样啊???