Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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_Testing - Fatal编程技术网

Vba 测试主要任务

Vba 测试主要任务,vba,excel,testing,Vba,Excel,Testing,我想解决以下测试问题。如果单元格中存在错误,即(=1/0),则此后将不会运行附加测试。我想知道如何在测试主要任务部分解决这个问题 Private Sub ts_NoBlank(TsCn, STST, LsSt, LsIn, TsRw, MsCo, MsIC, MsSt) Dim TsCl, StRw, LsRw, TsSh TsCl = ColNrOfField(TsCn) StRw = FsRwOfField(TsCn) + 1 LsRw = LsRwOfFi

我想解决以下测试问题。如果单元格中存在错误,即(=1/0),则此后将不会运行附加测试。我想知道如何在测试主要任务部分解决这个问题

Private Sub ts_NoBlank(TsCn, STST, LsSt, LsIn, TsRw, MsCo, MsIC, MsSt)
    Dim TsCl, StRw, LsRw, TsSh

    TsCl = ColNrOfField(TsCn)
    StRw = FsRwOfField(TsCn) + 1
    LsRw = LsRwOfField(TsCn)
    TsSh = SheetOfField(TsCn)

' Setting up Status Updates
    PLcSt = -1 'Starting previous local status is set to -100% to show eitherways
    rws = LsRw - StRw
    'this part has to be copied to whenever showing the status (Value of LcSt has to be added each time by function)
    LcSt = 0
    If LcSt - PLcSt >= LsIn Then
        Call ShowStatus(MsSt & " (" & Application.WorksheetFunction.Text(LcSt, "0%") & ")", ThisWorkbook.Worksheets("Calculations Running").Range("Started"), STST + (LsSt - STST) * LcSt)
        PLcSt = LcSt
    End If

' Testing primary task
    ErrNr = 0
    For Rw = StRw To LsRw 'ToDo speed up with fromrow torow
        If Len(ThisWorkbook.Sheets(TsSh).Cells(Rw, TsCl)) = 0 Then
            ThisWorkbook.Sheets(TsSh).Cells(Rw, TsCl).Interior.ColorIndex = 46
            ErrNr = ErrNr + 1
        End If

        'Showing Local Status
        LcSt = 0.1 + ((Rw / LsRw) * 0.75)
        If LcSt - PLcSt >= LsIn Then
            Call ShowStatus(MsSt & " (" & Application.WorksheetFunction.Text(LcSt, "0%") & ")", ThisWorkbook.Worksheets("Calculations Running").Range("Started"), STST + (LsSt - STST) * LcSt)
            PLcSt = LcSt
        End If

    Next Rw
' Updating Test Results on 'Testing' Page

    TRRg = "test" & TsRw & "_results"
    If ErrNr = 0 Then 'If Results are Positive
      ThisWorkbook.Worksheets("Testing").Range(TRRg) = MsCo
      ThisWorkbook.Worksheets("Testing").Range(TRRg).Interior.ColorIndex = 51
    Else 'If Errors are found
      ErrMS = NumberizeMessage(MsIC, "SP_textvers", "S_textvers", "P_textvers", ErrNr)
      ThisWorkbook.Worksheets("Testing").Range(TRRg) = ErrMS
      ThisWorkbook.Worksheets("Testing").Range(TRRg).Interior.ColorIndex = 3
    End If

    'Showing Local Status
    LcSt = 0.1
    If LcSt - PLcSt >= LsIn Then
      Call ShowStatus(MsSt & " (" & Application.WorksheetFunction.Text(LcSt, "0%") & ")", ThisWorkbook.Worksheets("Calculations Running").Range("Started"), STST + (LsSt - STST) * LcSt)
      PLcSt = LcSt
    End If

    ' Highlighting erroneous cells (if not done during testing)
    If ErrNr > 0 Then

    End If
'Showing Local Status 100%
    LcSt = 1
    If LcSt - PLcSt >= LsIn Then
      Call ShowStatus(MsSt & " (" & Application.WorksheetFunction.Text(LcSt, "0%") & ")", ThisWorkbook.Worksheets("Calculations Running").Range("Started"), STST + (LsSt - STST) * LcSt)
      PLcSt = LcSt
    End If

End Sub

由于您指出,
'测试主要任务
部分似乎有效,但之后似乎没有执行任何任务,因此我建议您在到达这里时:

'Showing Local Status
LcSt = 0.1
If LcSt - PLcSt >= LsIn Then
' Highlighting erroneous cells (if not done during testing)
If ErrNr > 0 Then

End If
'Showing Local Status 100%
LcSt = 1
If LcSt - PLcSt >= LsIn Then
此条件为false,因此永远不会执行代码

然后你到了这里:

'Showing Local Status
LcSt = 0.1
If LcSt - PLcSt >= LsIn Then
' Highlighting erroneous cells (if not done during testing)
If ErrNr > 0 Then

End If
'Showing Local Status 100%
LcSt = 1
If LcSt - PLcSt >= LsIn Then
而且,无论
ErrNr
的值是多少,都没有要执行的代码

然后你到了这里:

'Showing Local Status
LcSt = 0.1
If LcSt - PLcSt >= LsIn Then
' Highlighting erroneous cells (if not done during testing)
If ErrNr > 0 Then

End If
'Showing Local Status 100%
LcSt = 1
If LcSt - PLcSt >= LsIn Then
而且它仍然在计算
False
,所以它永远不会执行


您是否在调试器中查看了这些值,并确保所有内容都符合您的预期?

不确定您到底在追求什么。你的代码失败了吗?如果是,在哪里?您的代码是否需要执行其他任务,但您不知道如何执行?你可能会发现在你的
参数上声明类型很有价值,至少它会帮助我们了解更多关于你的代码。我的代码在:“测试主要任务ErrNr=0 For Rw=StRw to LsRw”中使用fromrow-torow-If-Len(thishworkbook.Sheets(TsSh).Cells(Rw,TsCl))=0则ThisWorkbook.Sheets(TsSh).Cells(Rw,TsCl).Interior.ColorIndex=46 ErrNr=ErrNr+1结束,如果在此处它起作用,因为如果有不接受的公式,它会为单元格着色,但随后将不运行其他测试。我想解决这个问题,所以如果有一个单元格的公式错误,我只想标记它,然后继续下一个过程。请在问题本身,而不是在评论中澄清问题。您的问题可以通过单击“编辑”链接进行编辑。