Excel VBA获取范围内的非空行数

我知道这已经被问了至less十几次,但是所有这些问题的解决scheme似乎是量身定做的,或者只是在我的代码中创build了一个错误。 出于某种原因,当我尝试从不同的工作表中引用范围时,出现错误。 以下是我的代码。 我有两个工作表(选项卡)。 一个有一个button来启动我的代码MENU ,另一个是我正在尝试读取和写入RAW 。 我所要做的就是找出工作表有多less行数据,这样我就可以遍历行并进行更改。 出于某种原因,我无法把头绕在它身上。

 Private Sub CommandButton21_Click() Dim wbCurrent As Workbook Dim wsCurrent As Worksheet Set wbCurrent = ThisWorkbook Set wsCurrent = wbCurrent.Worksheets("RAW") Dim i As Long Dim siteCol As Long siteCol = Range("I" & Rows.Count).End(xlUp).Row For i = 1 To siteCol wsCurrent.Range("I" & i) = "MARKED" Next i Range("I1") = siteCol End Sub 

1-总是使用Long来表示variables,除非您有特定的原因,否则不是IntegerInteger的最大值是32767 ,这可能不足以保存行数。

2-不要用COUNTA得到行数,这有很多缺点。 用这个代替:

 siteCol = wsCurrent.Range("I" & wsCurrent.Rows.count).End(xlUp).Row 

3-当你想把整个范围分配到相同的值时,你可以立即做到这一点,这是更快,更简单,就像这样(不需要循环):

 wsCurrent.Range("I1:I" & siteCol) = "MARKED" 

4-不需要Activate工作表来使用它。 删除语句wsCurrent.Activate并尝试始终使用合格的范围。