繁体   English   中英

为什么excel rowcount 在更改工作表后返回最大行?

[英]Why does excel rowcount return max row, after a change on the sheet?

代码工作“漂亮”(它需要清理等)但如果我删除行或修改Worksheets("Material For Quotation")并重新运行代码,它默认为最大行数(1,048,576)。 我四处搜索并阅读了微软的东西,但我无法弄清楚。 我难倒的是代码应该独立于工作表中的内容运行,但是我删除或修改工作表行计数的那一刻不起作用。

有没有人有洞察力?

Sub QuoteToMaterial()

Dim wb As Workbook
Dim ws, wscheck, ws1, ws2 As Worksheet

Dim i, j, k, l As Integer
Dim dict As New Dictionary
Dim Str As String

Dim key As Variant

Set wb = ThisWorkbook
Set ws1 = wb.Worksheets("Material For Quotation")
i = ws1.Cells(Rows.Count, 2).End(xlUp).row
j = 1
'init dictionary
For j = 2 To i
    If dict.Exists(Trim(UCase(ws1.Cells(j, 3).value))) = True Then
        dict(Trim(UCase(ws1.Cells(j, 3).value))) = dict(Trim(UCase(ws1.Cells(j, 3).value))) + ws1.Cells(j, 4).value
    Else
        dict.Add ws1.Cells(j, 3).value, ws1.Cells(j, 4).value
    End If
    
Next j

i = wb.Worksheets.Count
j = 1

For k = 1 To i
    Set wscheck = wb.Worksheets(k)
    Select Case True
        Case wscheck.Name = "Summary"
            GoTo Loopiter 'loop iterate
        Case wscheck.Name = "Material For Quotation"
            GoTo Loopiter
        Case wscheck.Name = "Pricing Summary"
            GoTo Loopiter
        Case wscheck.Name = "Installation 1"
            GoTo Loopiter
        Case wscheck.Name = "Installation 2"
            GoTo Loopiter
        Case wscheck.Name = "Inst Worksheet 1"
            GoTo Loopiter
        Case wscheck.Name = "Inst Worksheet 2"
            GoTo Loopiter
        Case Else
           
        Set ws = wb.Worksheets(k)
        'inserts $ per unit into the right place
        For l = 4 To 101
            
            If dict.Exists(ws.Cells(l, 9).value) = True Then
                ws.Cells(l, 11).value = dict(ws.Cells(l, 9).value)
            End If
            
        Next l

        j = j + 1
     End Select
Loopiter:
Next k

    

End Sub

对不起,伙计们,这个问题的答案是我们最终将表格格式放在第 1-4 列到第 1,048,576 行。 所以使用ws.cells(rows.count,2)到底部,因为它们都被一个表占用了。

纠正要么删除表格格式,只填充单元格以获取外观或使用listobject并获取填充行的数量。

使用 VBA 在 Excel 中查找上次使用的单元格时出错

对不起,直到每个人都专注于凌乱的代码,我才意识到这个问题,哈哈

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM