繁体   English   中英

在Excel中的单独工作表上找不到最后一行

[英]Can not find last row on a separate worksheet in excel

我目前正在处理一个宏,并且可以按照我的要求100%地运行它,但是当我将控制组移到另一个工作表时,我开始遇到各种各样的问题。 这是代码:

Sub Duplicate_Count()

'Diclare Variables
Dim LastRow As Long
Dim value1 As String
Dim value2 As String
Dim counter As Long
Dim startRange As Long
Dim endRange As Long
Dim inColumn As String
Dim outColumn As String
Dim color As Long
counter = 0
Dim sht As Worksheet
Dim controlSht As Worksheet
Set sht = Worksheets("Sheet1")
Set controlSht = Worksheets("Duplicate Check")

'Find the last used row in column L
LastRow = sht.Cells(Rows.Count, "L").End(xlUp).Row

'set default ranges
startRange = 2
endRange = LastRow - 1
inColumn = "L"
outColumn = "N"

'check for user inputs
If controlSht.Cells(8, "B") <> "" Then
    startRange = controlSht.Cells(8, "B")
End If
If controlSht.Cells(8, "C") <> "" Then
    endRange = controlSht.Cells(8, "C")
End If
If controlSht.Cells(11, "C") <> "" Then
    Column = controlSht.Cells(11, "C")
End If
If controlSht.Cells(14, "C") <> "" Then
    Column = controlSht.Cells(14, "C")
End If
color = controlSht.Cells(17, "C").Interior.color

'Search down row for duplicates
Dim i As Long

For i = startRange To endRange

    'Sets value1 and value2 to be compared
    value1 = sht.Cells(i, inColumn).Value
    value2 = sht.Cells(i + 1, inColumn).Value

    'If values are not diferent then counter will not increment
    counter = 1

    Do While value1 = value2
        sht.Cells(i, inColumn).Interior.color = color
        sht.Cells(i + counter, inColumn).Interior.color = color
        counter = counter + 1
        value2 = sht.Cells(i + counter, inColumn).Value
    Loop

    'Ouput the number of duplicates on last duplicates row
    If counter <> 1 Then
        sht.Cells(i + counter - 1, outColumn) = counter
        i = i + counter - 1
    End If

Next i

End Sub

这是我的第一个程序,对于所有错误我深表歉意。 除了没有用户输入时查找最后一行之外,这段代码完全符合我的要求。 它总是说最后一行是1,应该是110460。我不确定它是从错误的表中获取还是逻辑上有错误。

仅通过先激活工作表即可轻松解决此问题。 我记不清确切的语法,但是由于您标记了此宏,所以只记录了一个宏,然后选择一个工作表并在某个位置单击它。 然后打开宏,它会显示类似Sheets(“ sheet name” .Activate。或Sheets(“ sheet name”)。Select的内容。对要在其上运行宏的每个工作表重复此操作。要澄清,每次您的宏在一张纸上找到最后一行,然后激活或选择下一个工作表,然后再次找到最后一行,假设这是通过工作表名称列表循环调用的。

我将“ L”更改为11,现在看来一切正常。 为什么以这种方式想要它,我不知道,但是它有效。

我总是这样。

Sub FindingLastRow()

'PURPOSE: Different ways to find the last row number of a range
'SOURCE: www.TheSpreadsheetGuru.com

Dim sht As Worksheet
Dim LastRow As Long

Set sht = ThisWorkbook.Worksheets("Sheet1")

'Ctrl + Shift + End
  LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

'Using UsedRange
  sht.UsedRange 'Refresh UsedRange
  LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row

'Using Table Range
  LastRow = sht.ListObjects("Table1").Range.Rows.Count

'Using Named Range
  LastRow = sht.Range("MyNamedRange").Rows.Count

'Ctrl + Shift + Down (Range should be first cell in data set)
  LastRow = sht.Range("A1").CurrentRegion.Rows.Count

End Sub

https://www.thespreadsheetguru.com/blog/2014/7/7/5-different-ways-to-find-the-last-row-or-last-column-using-vba

暂无
暂无

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

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