Vba 找到第一个空单元格时结束命令
此代码用于查看值列表,代码需要在第一个空行结束。当前,当遇到空白单元格时,此代码会导致错误。不确定当命令命中空白单元格时如何结束。任何建议都将不胜感激Vba 找到第一个空单元格时结束命令,vba,excel,Vba,Excel,此代码用于查看值列表,代码需要在第一个空行结束。当前,当遇到空白单元格时,此代码会导致错误。不确定当命令命中空白单元格时如何结束。任何建议都将不胜感激 Sub PMN_Update() Dim Month As String Dim Year As String Dim File As String Dim FileRow As String Dim x As Variant Month = Range("G2").Value Year = Range("G3").Value
Sub PMN_Update()
Dim Month As String
Dim Year As String
Dim File As String
Dim FileRow As String
Dim x As Variant
Month = Range("G2").Value
Year = Range("G3").Value
NumFiles = Application.CountA(Sheets("PMNs").Range("A2:A200"))
ChDir "L:\management tools\PROJECT\Prog_Fcst"
For x = 1 To NumFiles
FileRow = "A" & 1 + x
File = Range(FileRow).Text
Workbooks.Open Filename:="XXXXXXXXXXXXXXX" & File, _
UpdateLinks:=0
Sheets("Initiation").Select
Range("Q4").Select
ActiveCell.FormulaR1C1 = Month
Range("Q5").Select
ActiveCell.FormulaR1C1 = Year
Application.DisplayAlerts = False
Application.Run "'" & File & "'!UpdateMaterial"
Application.Run "'" & File & "'!UpdateAMRData"
Application.DisplayAlerts = True
'Application.Run UpdateMaterial
'Application.Run UpdateAMRData
ActiveWorkbook.Save
ActiveWorkbook.Close
Next x
End Sub
当您遇到空白单元格时,只需执行一个
Exit Sub
或End
:
For x = 1 To NumFiles
If IsEmpty(Cells(x + 1, "A").Value) Then End
或者,您可以根据文件的值进行测试:
File = Range(FileRow).Text
If File = "" Then End
当您遇到空白单元格时,只需执行一个Exit Sub
或End
:
For x = 1 To NumFiles
If IsEmpty(Cells(x + 1, "A").Value) Then End
或者,您可以根据文件的值进行测试:
File = Range(FileRow).Text
If File = "" Then End
您可以使用不同的选项来处理此问题:
第一种方法可以使用While
While Cells(x + 1, "A").Value <> "" 'this check if it is empty
'YOUR CODE GOES HERE
x = x + 1
Wend
While单元格(x+1,“A”).Value“”将检查它是否为空
“你的代码在这里
x=x+1
温德
第二种方法是对错误使用:
你可以用这个
出错时继续下一步
或
错误转到99
并在End Sub
之前的next之后添加一行,如下所示:99 Exit Sub
第三种是使用其他用户提供的if语句
我个人喜欢第一种方法。您有不同的处理方法:
第一种方法可以使用While
While Cells(x + 1, "A").Value <> "" 'this check if it is empty
'YOUR CODE GOES HERE
x = x + 1
Wend
While单元格(x+1,“A”).Value“”将检查它是否为空
“你的代码在这里
x=x+1
温德
第二种方法是对错误使用:
你可以用这个
出错时继续下一步
或
错误转到99
并在End Sub
之前的next之后添加一行,如下所示:99 Exit Sub
第三种是使用其他用户提供的if语句
我个人喜欢第一种方法。你可以在出错时使用此继续下一步
或在出错时使用转到99
并在下一个x
后添加另一行,作为99退出子项
@Masoud抱歉缺少上下文…原始帖子已更新。此代码用于查看值列表,代码需要在第一个空行结束。问题末尾的“AAAA…”是什么意思?您可以在引用“”时使用,而不是for循环,或者使用我在第一条注释中提供的其他选项(已编辑。请查看)@CallumDA刚刚在那里抛出了一堆As来绕过Stack的最低文本要求…它一直阻止我的帖子,因为它主要是代码。你可以在错误恢复下一步时使用此,或者在错误转到99时使用此,并在下一个x
后添加另一行As99退出子部分
@Masoud抱歉缺少上下文…原文后更新。此代码用于查看值列表,代码需要在第一个空行结束。问题末尾的“AAAA…”是什么意思?您可以在引用“”时使用,而不是for循环,或者使用我在第一条注释中提供的其他选项(已编辑。请查看)@CallumDA刚刚抛出了一堆As来绕过Stack的最低文本要求…它一直阻止我的帖子,因为它主要是代码。在错误上使用
的缺点是所有错误都会被它捕获,而不仅仅是单元格为空所导致的错误<当遇到错误之前没有其他方法测试该错误时,应将“错误上的代码>作为最后手段”
,并且可以通过其他方法轻松完成空白单元格的测试。@YowE3K是的。这就是为什么我喜欢第一种方法。但根据宏的用途,缺点可能是您想要的(如果您想调试错误,则不太可能)。在错误上使用的缺点是,所有错误都将被它捕获,而不仅仅是单元格为空所导致的错误<当遇到错误之前没有其他方法测试该错误时,应将“错误上的代码>作为最后手段”
,并且可以通过其他方法轻松完成空白单元格的测试。@YowE3K是的。这就是为什么我喜欢第一种方法。但取决于宏的用途,其缺点可能是您想要的(如果您想调试错误,则不太可能)。实际上,这个答案是错误的如果是空的(单元格(x+1,“A”).Value),则结束
这里您也排除了x
,因为x+1
是空的。@Masoud-OP使用从1到NumFiles
的循环,但是当x
为1时,他们正在查看工作表第2行中的信息。这就是为什么FileRow=“A”&1+x
语句执行1+x
。这和你的在执行x+1
时的原因是一样的。明白了。但是我更喜欢第二个if语句,因为它是显式检查文件的。感谢您的澄清,并对错误的评论表示歉意。@Masoud个人来说,我更喜欢第二句话,但第一句话更接近OP对问题的表述方式,即“当命令碰到空白单元格时如何结束命令”,因此,似乎最好展示如何将问题中的语句转换为代码中的语句。实际上,这个答案是错误的如果是空的(单元格(x+1,“A”).Value),则结束
这里您也排除了x
,因为x+1
是空的。@Masoud-OP使用从1到NumFiles
的循环,但是当x
为1时,他们正在查看工作表第2行中的信息。这就是为什么FileRow=“A”&1+x
语句执行1+x
。这和你的在执行x+1
时的原因是一样的。明白了。但是我更喜欢第二个if语句,因为它是显式检查文件的。感谢您的澄清,并对错误的评论表示歉意。@Masoud个人来说,我更喜欢第二句话,但第一句话更接近于OP对问题的表述方式,即“当命令碰到空白单元格时如何结束”,因此,最好展示