获取行记录的数量

时间:2015-02-02 07:29:24

标签: vba ms-word word-vba

我想使用word作为前端用户表单附加数据,并在单击提交按钮时将数据导出到特定的csv文件。

首先我需要知道哪一行应该追加数据。以下是代码,我收到了nrow = rng1.UsedRange.Rows.Count

的错误消息
'Reference - Microsoft Excel 12.0 Object library 12

'Word
Global objDoc As word.Document
Global docName As String
Global docPath As String
Global docFullName As String

'Workbook
Global objWb As Excel.Workbook
Global objWs As Excel.Worksheet
Global rng1 As Range
Global nrow As Integer
'Global objWord As word.Application

Public Sub Initial_Global()
    'Word
    Set objDoc = ActiveDocument
    docName = objDoc.Name
    docPath = objDoc.Path
    docFullName = objDoc.FullName

    'Excel
    Set objWb = Workbooks.Open(FileName:="C:\Users\1502911\Desktop\Database1.csv")
    Set objWs = objWb.Worksheets("Database1")
    Set rng1 = objWs.Range("A1")
    nrow = rng1.UsedRange.Rows.Count
    MsgBox nrow
End Sub

1 个答案:

答案 0 :(得分:1)

  

nrow = rng1.UsedRange.Rows.Count

这意味着:

Worksheets("Database1").Range("A1").UsedRange.Rows.Count 'wrong

当然它会返回错误,因为你询问范围的使用范围" A1"

必须是这样的:

Worksheets("Database1").UsedRange.Rows.Count

所以在你的代码中,如果你只需要计算列的使用范围内的行" A"必须是下一个:

nrow = objWs.UsedRange.Columns(1).Rows.Count

但是要小心这种获取工作表中最后一行的方法,当使用的范围不是从第一行开始时,问题就会出现问题,例如:如果第一行是空的,那么你将收到的数量少于预期。在这种情况下使用此方法:

nrow = objWs.Cells(Rows.Count, 1).End(xlUp).Row

也可能是问题,例如列" A"中使用过的单元格数由于某些原因而不是列中所用细胞的数量" B"或" D"等你需要得到最后一个未使用的行,在这种情况下你需要这个方法:

Dim ocell As Range
For Each ocell In objWs.UsedRange
    nrow = ocell.Row
Next
MsgBox nrow