gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:33:45 25 4
gpt4 key购买 nike

我知道这已经被问了至少十几次,但在所有这些问题中,解决方案似乎是量身定制的,或者只是在我的代码中创建了一个错误。出于某种原因,当我尝试从不同的工作表中引用一个范围时出现错误。下面是我的代码。我有两个工作表(标签)。有一个按钮来启动我的代码 MENU ,另一个是我要读写的数据RAW .我要做的就是找出工作表有多少行数据,这样我就可以遍历这些行并进行更改。出于某种原因,我无法绕开它或其他东西。

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对于您的变量,而不是 Integer除非你有特定的原因。 Integer 的最大值是 32767 ,这可能不足以容纳您的行数。

2- 不要使用 COUNTA 获取行数, 这有很多缺点。改用这个:

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

这将在 wsCurrent 中找到最后占用的单元格的行号,假设 wsCurrent位于文档的顶部(从第 1 行开始)。请注意,如果 wsCurrent 完全为空,这将找到 wsCurrent 上方第一个占用单元格的行号,或文档的第一行。

3-当您想将整个范围分配给相同的值时,您可以立即执行此操作,这样更快更简单,如下所示(无需循环):
wsCurrent.Range("I1:I" & siteCol) = "MARKED"

4-无需 Activate使用它的工作表。删除声明 wsCurrent.Activate并尝试始终使用合格的范围。

关于vba - Excel VBA获取范围内的非空行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44855168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com