获取行记录数
Get number of row records
我想使用 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:\Users02911\Desktop\Database1.csv")
Set objWs = objWb.Worksheets("Database1")
Set rng1 = objWs.Range("A1")
nrow = rng1.UsedRange.Rows.Count
MsgBox nrow
End Sub
nrow = rng1.UsedRange.Rows.Count
这意味着:
Worksheets("Database1").Range("A1").UsedRange.Rows.Count 'wrong
当然会return错误,因为你问的是范围"A1"
的使用范围
一定是这样的:
Worksheets("Database1").UsedRange.Rows.Count
所以在您的代码中,如果您只需要计算列的使用范围内的行,"A" 必须是下一个:
nrow = objWs.UsedRange.Columns(1).Rows.Count
但要小心这种获取最后一行的方法sheet,当使用的范围不是从第一行开始时,问题就会出现,例如如果第一行为空,那么您收到的计数将少于预期。在这种情况下使用此方法:
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
我想使用 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:\Users02911\Desktop\Database1.csv")
Set objWs = objWb.Worksheets("Database1")
Set rng1 = objWs.Range("A1")
nrow = rng1.UsedRange.Rows.Count
MsgBox nrow
End Sub
nrow = rng1.UsedRange.Rows.Count
这意味着:
Worksheets("Database1").Range("A1").UsedRange.Rows.Count 'wrong
当然会return错误,因为你问的是范围"A1"
的使用范围一定是这样的:
Worksheets("Database1").UsedRange.Rows.Count
所以在您的代码中,如果您只需要计算列的使用范围内的行,"A" 必须是下一个:
nrow = objWs.UsedRange.Columns(1).Rows.Count
但要小心这种获取最后一行的方法sheet,当使用的范围不是从第一行开始时,问题就会出现,例如如果第一行为空,那么您收到的计数将少于预期。在这种情况下使用此方法:
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