2017-06-01 69 views
0

我有一个例子,我想写一个VBA语句来选择单个列中的所有数据,列数据中没有空格。列位置永远不会改变,例如列A,数据从第3行开始。但列中的总行数会定期更改。选择具有可变行数的列中的所有数据

我想要系统动态选择列中的所有单元格,然后我可以针对这些选定的数据块运行一个方法。

+0

请您详细说明的问题多一点。因为现在我甚至没有看到问号。 :) – larsemil

+0

你想运行什么方法?您可能不需要真正选择数据 - 作为一般规则,您不必在对范围执行操作之前进行选择。 –

回答

0

尝试

Dim LastRow as Long, sht as worksheet 
Set sht = ThisWorkbook.Worksheets("My Sheet Name")  
LastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row 
sht.Range("A3:A" & LastRow).Select 

像达伦Bartrup - 库克说,你可能不需要选择数据,几乎总是可以直接执行操作是要快得多。

0

如果列“分离”意味着没有其他非空单元格触摸你的数据,你可以使用:

Range("firstCellInYourColumn").CurrentRegion.Select 

(这种工作方式为CTRL相同+ *从键盘)

以其它方式使用:

Range(Range("firstCellInYourColumn"), Range("firstCellInYourColumn").End(xlDown)).Select 

都将工作如果真的有没有空格数据中。 你还应该在工作表表达式中加上所有Range,我省略了这一点。

0

至于不选择它执行你的范围内采取行动的例子:

Public Sub Test() 

    Dim rColA As Range 

    With ThisWorkbook.Worksheets("Sheet1") 
     Set rColA = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp)) 
     MsgBox "Column A range is " & rColA.Address 'Delete if you want. 

     rColA.Interior.Color = RGB(255, 0, 0) 'Turn the back colour red. 

     rColA.Cells(2, 1).Insert Shift:=xlDown 'Insert a blank row at second cell in range 
               'So will insert at A4. 

     'If the first cell in your range is a number then double it. 
     If IsNumeric(rColA.Cells(1, 1)) Then 
      rColA.Cells(1, 1) = rColA.Cells(1, 1) * 2 
     End If 

    End With 

End Sub 
相关问题