请不要介意本人点数太少 [VBA]worksheet.usedrange.rows.count的相关问题 (30分)

  • 主题发起人 主题发起人 lonesashimi
  • 开始时间 开始时间
L

lonesashimi

Unregistered / Unconfirmed
GUEST, unregistred user!
请问当UsedRange不足一页时,为何返回的rowcount大于实际所占行数
rowcount:=ExcelWorkSheet1.UsedRange[0].Rows.Count;
如何才能得到不足一页的行数呢?
 
UsedRange用起来的确有时怪怪的.你能保证在实际行数以后的单元格中
没有内容吗,包括空格.
 
activesheet.UsedRange[0].Rows.Count
 
我是用ADO控件将数据集用CopyFromRecordset方法导入的,数据计的个数小于一页纸的
记录个数。不会出现空格吧。
 
ado没用过,我一见ado就退避三舍
 
其实微软在新版本中提升了ADO的执行效率,导入大的数据集速度很快的。
这几天放假,可能不能上来了,希望大家继续贴贴子。
 
to lonesashimi:
你应该就是原来的zhang7808,我记得你给我写过一份信,但是我有清洁癖,不小心把
你的信给删了.如果方便的话,麻烦你再给我寄一份信好吗.
我的信箱: snap_sun@263.net 或者 sunyu@hzcnc.com(这个是我的服费信箱)

转入正题:
你的这个问题,我今天写了一个demo,在我的机子上显示正常,所以我也不清楚问题到底
出在什么地方,我用的是OfficeXP (我记得你好像用的是Office2000)
我想把xls文件和一个测试用的mdb文件寄给你,帮我看看.
没有涉及到Delphi,是因为我觉得Delphi中得到的结构应该是一样的.
在sheet1上放了两个button,对于的代码分别如下:

Private Sub CommandButton1_Click()
Dim Conn As ADODB.Connection
Dim strSQL As String
Dim rs As ADODB.Recordset
Dim iCols As Integer
Dim str As String
Set Conn = New ADODB.Connection
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:/dbtest.mdb;Persist Security Info=False"
Conn.Open
strSQL = "select * from 表1"
Set rs = New ADODB.Recordset
rs.ActiveConnection = Conn
rs.Open strSQL

For iCols = 0 To rs.Fields.Count - 1
Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
Range("A2").CopyFromRecordset rs
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
str = "usedrows= " & CStr(UsedRange.Rows.Count) & " , usedcols=" & CStr(UsedRange.Columns.Count)
MsgBox str '弹出消息框,显示UsedRange的一些行和列信息
End Sub

Private Sub CommandButton2_Click()
Cells.Select
Selection.Clear
Cells(1, 1).Select
'清除sheet1
End Sub

如果有什么反馈,请通知我.其实我特别想得到你出现错误情况的例子,增加
一些这方面应用的经验[8D]



 
实在是耽误了时间,问题果真出在Excel文件上,真的存在空格,犯懒没有写一个Demo检查,
只是手工查了,耽误了大家这麽长时间。bluerain提供的Demo可以作为检测工具了。
不过bluerain你说的‘UsedRange用起来的确有时怪怪的’指什麽?
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部