Excel 根据行数防止行消除

Excel 根据行数防止行消除,excel,vba,conditional,Excel,Vba,Conditional,我有一个电子表格,需要维护至少17行内容。列B列出了行的编号。我使用宏记录器开发了一些代码: Columns("B:B").Select Selection.Find(What:="1", After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).A

我有一个电子表格,需要维护至少17行内容。列B列出了行的编号。我使用宏记录器开发了一些代码:

Columns("B:B").Select
Selection.Find(What:="1", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
ActiveCell.Select
Range(Selection, Selection.End(xlDown)).Select

我希望做的是:如果所选范围内的单元格数少于18,则退出sub,else(运行代码)

我不确定这是否是您想要的,但由于知识有限,这是我能想到的最好的:

Dim c As Range
For Each c In Selection
    If c.Value < 18 Then
        Exit Sub
    Else
        'Run Code (Your code here)
    End If
Next c
尺寸c作为范围
对于选择中的每个c
如果c.值小于18,则
出口接头
其他的
'运行代码(此处为您的代码)
如果结束
下一个c
干杯,
kpark

这就成功了

Columns("B:B").Select
 Selection.Find(What:="1", After:=ActiveCell, LookIn:=xlValues,  LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
    ActiveCell.Select
    Range(Selection, Selection.End(xlDown)).Select
Dim c As Range
Set c = Selection
If WorksheetFunction.CountA(c) < 18 Then
msg77 = MsgBox("Cannot Delete the Row since there are fewer than 18 Rows", vbOKOnly, "Sorry, I Cannot Serve your Request")
Exit Sub
Else
Selection.Copy
End If
列(“B:B”)。选择
Selection.Find(What:=“1”,After:=ActiveCell,LookIn:=xlValues,LookAt:=_
xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False_
,SearchFormat:=False)。激活
ActiveCell。选择
范围(选择,选择。结束(xlDown))。选择
调光范围
集合c=选择
如果工作表function.CountA(c)<18,则
msg77=MsgBox(“由于行数少于18行,因此无法删除该行”,vbOKOnly,“对不起,我无法满足您的请求”)
出口接头
其他的
选择,复制
如果结束

用户可以自由选择任何单元格吗?我编写的代码将所选范围设置为表单中内容的行数。用户可以自由选择任何单元格,但这不会影响在上述代码末尾处于活动状态的选择…在本例中,c.Value的计算结果为1。我需要手机号码或者其他什么。。。我将在对象浏览器中查找,看看是否能找到一些东西。@RichardPullman我不确定您所说的c是什么意思。在您的实例中,c的值计算为1。也许,
Selection.Find()
工作不正常?也许
Find()
后面的行不起作用。它起作用了。只是c.value似乎在计算所选范围的数量,因为c是一个范围变量?这很有效<代码>如果工作表function.CountA(c)<18那么ohhhh我读错了问题:P我以为你在问值。哈哈。干杯。在这种情况下,不需要将c设置为范围并将其设置为选择。因此,取出
dim c作为范围,将c=Selection设置为
,并将
替换为If WorksheetFunction.CountA(c)<18,然后将
替换为If WorksheetFunction.CountA(Selection)<18,那么你的代码将更快一点。