从当前选择中返回行号(Excel VBA)

时间:2018-04-14 03:45:10

标签: excel vba excel-vba

我正在尝试处理从quickbooks转储的excel数据。为了做我想做的事情,我需要在A列中使用第一个非空白行,这取决于快速书中报告的时间段。

我正在使用

Sub Test()
Selection.End(xlDown).Select

找到A列中的第一个非空白行。

比如说我有两个文件,一个是A列中第一个非空白单元格是A157。 Selection.End(xlDown).Select选择A157。然后我需要选择C1:C157。

另一个电子表格在A122的A列中有第一个非空白单元格。 Selection.End(xlDown).Select选择A122。然后我需要选择C1:C122。使用xlDown找到的A列中的行是一个变量,然后我需要使用该变量在C列中创建一个选择。

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

要获取工作表中的最后一行/列,请尝试:

    Dim ws As Worksheet
    set ws = ActiveSheet
    With ws
        lastRow = ws.Cells.SpecialCells(xlCellTypeLastCell).Row
        lastCol = ws.Cells.SpecialCells(xlCellTypeLastCell).Column
    End With

要获取范围中的最后一行/列,请尝试:

    Dim rg as Range
    With ws
         Set rg = .Range(.Cells(1, 3), .Cells(999, 3))
         With rg
             lastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
             lastCol = .Cells.SpecialCells(xlCellTypeLastCell).Column
         End With
    End With

要设置上一行/列的新范围,请尝试:

    With ws
         Set rg = .Range(.Cells(firstRow, firstCol), .Cells(lastRow, lastCol))
    End With

如果您有多个工作表,则可以像下面这样指定多个工作表:

    Dim ws(3) As Worksheet
    set ws(0) = Worksheets("SheetName1");
    set ws(1) = Worksheets("SheetName2");
    'etc.  

答案 1 :(得分:2)

尝试,

dim rng as range
set rng = range(cells(1, "C"), cells(activecell.end(xldown).row, "C"))
rng.select