Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 找到第一个空单元格时结束命令_Vba_Excel - Fatal编程技术网

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
后添加另一行As
99退出子部分
@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对问题的表述方式,即“当命令碰到空白单元格时如何结束”,因此,最好展示