Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Excel VBA代码在我单步执行时工作,但在';快跑_Excel_Vba - Fatal编程技术网

Excel VBA代码在我单步执行时工作,但在';快跑

Excel VBA代码在我单步执行时工作,但在';快跑,excel,vba,Excel,Vba,我有一些基本的VBA,它允许用户从一个表中获取一个字段,并使用它更新另一个表。当我一步一步地运行它时,它工作得很好,但是当我使用F5运行它时,什么也没有发生。我没有收到任何错误,只是什么也没发生 我想这可能是因为在下一步发生之前,这个值没有被分配给其中一个变量,但我以前从来没有遇到过这个问题,我一直认为VBA在完成它所开启的那一步之前不会移动到下一步 我的代码如下: Option Explicit Sub acceptDateComp() 'set data type

我有一些基本的VBA,它允许用户从一个表中获取一个字段,并使用它更新另一个表。当我一步一步地运行它时,它工作得很好,但是当我使用F5运行它时,什么也没有发生。我没有收到任何错误,只是什么也没发生

我想这可能是因为在下一步发生之前,这个值没有被分配给其中一个变量,但我以前从来没有遇到过这个问题,我一直认为VBA在完成它所开启的那一步之前不会移动到下一步

我的代码如下:

    Option Explicit

Sub acceptDateComp()

    'set data type
    Dim dtType As String
    dtType = "opportunity"

    'declare sheets
    Dim wsComp As Worksheet
    Set wsComp = ThisWorkbook.Sheets(dtType & "Comp")
    Dim wsBCE  As Worksheet
    Set wsBCE = ThisWorkbook.Sheets(dtType & "Snapshot")
    Dim wsOffline As Worksheet
    Set wsOffline = ThisWorkbook.Sheets(dtType & "Database")

    'declare tables
    Dim bce As ListObject
    Set bce = wsBCE.ListObjects(dtType & "Snapshot")
    Dim offline As ListObject
    Set offline = wsOffline.ListObjects(dtType & "Database")
    Dim dateComp As ListObject
    Set dateComp = wsComp.ListObjects(dtType & "DateComp")

    'declare heights and areas
    Dim offlineRange As Range
    Set offlineRange = offline.ListColumns(1).DataBodyRange

    'check for acceptance, then change values
    Dim i As Long
    Dim dateID As Long
    Dim offlineRow As Long
    Dim bceDate As String

    For i = 2 To dateComp.ListRows.Count + 1
        If dateComp.ListColumns(6).Range(i).Value = "Yes" Then
            dateID = dateComp.ListColumns(1).Range(i).Value
            offlineRow = Application.WorksheetFunction.Match(dateID, offlineRange, 0)
            bceDate = dateComp.ListRows(i - 1).Range(5).Value
            offline.ListRows(offlineRow).Range(12).Value = bceDate
        End If
    Next i

    Call opportunityComp

End Sub

第一步:将
Option Explicit
添加到模块顶部并声明所有变量。下一步,确保所有
工作表
调用都符合它们所在的工作簿。然后还要明确说明
范围
调用的
。。。。也许用F8来看看发生了什么。谢谢,做了这些改变,但没有多大进展。当我一步一步通过它时,代码现在不起作用;除了离线.ListRows(offlineRow).Range(12).Value=bceDate行之外,一切都按预期进行。同样,没有出现错误,但也没有发生任何事情。请在此处添加
.Value
dateComp.ListColumns(6).Range(i).Value=“yes”
。当你用F8单步执行时会发生什么?完成,没有变化。该行代码已经正确运行。当我逐步使用F8时,IF语句返回
TRUE
,因此其中的代码将运行。我将手表添加到所有变量中,它们的行为都符合预期。当最后一行运行时,什么也不会发生。超级奇怪。而且你的代码中没有关于“下一步继续”的
错误?