2016-06-08 226 views
0

如何在电子表格中的数据最后一个单元格旁边的列中指定单元格,例如如果我在在vba中定义动态范围

Range(Cells(1, 1), Cells(lastRow, lastColumn)) 

有数据如何动态地定义

Range(Cells(1, 2), Cells(lastRow, n_lastColumn)) 

在功能,使得n_lastColumn指下一列lastColumn后?

回答

1

Range(Cells(1,1), Cells(lastRow, lastColumn)).offset(,1)

Range("A1").currentregion.offset(,1)

+0

请注意,如果您有稀疏的数据,“CurrentRegion”将停在空行/列处,这可能会导致不良行为。 – arcadeprecinct

0

您可以使用对象上提供的UsedRange属性。

但是请注意,这给你一个水印使用的范围,而不是目前使用的范围;即如果您在单元格中写入值,则将其删除,但仍然包含UsedRange

+0

看来,当你在一个宏用它来更新'UsedRange'。经过一些测试后,我发现它不可靠。在某些时候,它会调整列而不是行,并保留包含从未填充过的单元格。 – arcadeprecinct

0
sub find_last() 

    Dim LastRow As Integer 
    Dim LastCol As Integer 
    Dim WS as Worksheet 

    Set WS = ThisWorkbook.Worksheets("MySheet") 


    LastRow = WS.Cells.Find(What:="*", After:=WS.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False).row 
    LastCol = WS.Cells.Find(What:="*", After:=WS.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False).Column 


    WS.Cells(LastRow, LastCol + 1) = "MyData" 

end sub