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,除非您有特定的原因,否则不是Integer
。 Integer
的最大值是32767 ,这可能不足以保存行数。
2-不要用COUNTA
得到行数,这有很多缺点。 用这个代替:
siteCol = wsCurrent.Range("I" & wsCurrent.Rows.count).End(xlUp).Row
3-当你想把整个范围分配到相同的值时,你可以立即做到这一点,这是更快,更简单,就像这样(不需要循环):
wsCurrent.Range("I1:I" & siteCol) = "MARKED"
4-不需要Activate
工作表来使用它。 删除语句wsCurrent.Activate
并尝试始终使用合格的范围。