求助!!!vba读取excel表格数据问题。
Public Function guimianshejigaocheng()Dim excelApp As Excel.Application
Dim excelSheet As Excel.Worksheet
Dim strFile As String
strFile = ThisDrawing.Application.VBE.ActiveVBProject.fileName
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = False
excelApp.Workbooks.Open Left$(strFile, Len(strFile) - Len("ex01.dvb")) & "\Excel\demo.xls"
Set excelSheet = excelApp.ActiveWorkbook.Sheets("Sheet1")
Dim text As AcadText
Dim i As Integer, k As Integer
For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value
e = a
k = 910 + 1.5 + (i - 1) * 10
Dim insert(0 To 2) As Double
insert(0) = k - 12
insert(1) = 245 - 4 + 35 - 2.5 + 10
insert(2) = 0
Dim textobj As AcadText
Set textobj = ThisDrawing.ModelSpace.AddText(e, insert, 2)
textobj.Rotation = 3.14159 / 2
Next i
' 退出Excel应用程序
excelApp.Quit
End Function
我用这段代码标注里程,现在问题是每次我都需要给一个循环范围,有没有办法让vba读到最后一条记录自动停止?
可以用do while语句嘛.也可以用无限循环的for语句,用if条件判断,满足条件跳出循环. VBALISPER 发表于 2011-11-22 12:23 static/image/common/back.gif
可以用do while语句嘛.也可以用无限循环的for语句,用if条件判断,满足条件跳出循环.
多谢回复,无限循环的怎么做?是不是把循环的上限改成一个很大的数?比如for i=2 to 1000000? For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value
改成如下:
Dim a As Variant, e As String
For i = 2 To excelSheet..End(xlUp)
a = excelSheet.Cells(i, 3).Value
黄玉宏 发表于 2011-11-22 20:26 static/image/common/back.gif
For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value
谢谢 黄玉宏 发表于 2011-11-22 20:26 static/image/common/back.gif
For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value
C65536是什么意思?不管是a取哪列数据,i的循环上限都是这个语句吗? 这是Excel2003,它只有最多65536行。更加自动适应Excel版本的要复杂些,2007版的到网上搜索一下,反正数字大多了,应该是C1048576.做成自适应Excel版本的:Cells(excelApp.Rows.Count, 3),也就是从C列最后一行开始向上搜索第一个用数据的行数。你这纯粹是对Excel编程。我开发测绘软件时都这样。注意,数据不能超过起始行2,也就是要用数据才行,否则搜索到1。 黄玉宏 发表于 2011-11-23 20:31 static/image/common/back.gif
这是Excel2003,它只有最多65536行。更加自动适应Excel版本的要复杂些,2007版的到网上搜索一下,反正数字大 ...
好的,谢谢。 我现在也要解决这样的问题。。。 尕武子 发表于 2011-11-25 09:20 static/image/common/back.gif
我现在也要解决这样的问题。。。
你解决了吗?会用excel中的数据画多段线吗?加我qq吧,416958890 身份验证输入vba
页:
[1]
2