Excel VBA代码在我单步执行时工作,但在';快跑
我有一些基本的VBA,它允许用户从一个表中获取一个字段,并使用它更新另一个表。当我一步一步地运行它时,它工作得很好,但是当我使用F5运行它时,什么也没有发生。我没有收到任何错误,只是什么也没发生 我想这可能是因为在下一步发生之前,这个值没有被分配给其中一个变量,但我以前从来没有遇到过这个问题,我一直认为VBA在完成它所开启的那一步之前不会移动到下一步 我的代码如下:Excel VBA代码在我单步执行时工作,但在';快跑,excel,vba,Excel,Vba,我有一些基本的VBA,它允许用户从一个表中获取一个字段,并使用它更新另一个表。当我一步一步地运行它时,它工作得很好,但是当我使用F5运行它时,什么也没有发生。我没有收到任何错误,只是什么也没发生 我想这可能是因为在下一步发生之前,这个值没有被分配给其中一个变量,但我以前从来没有遇到过这个问题,我一直认为VBA在完成它所开启的那一步之前不会移动到下一步 我的代码如下: Option Explicit Sub acceptDateComp() 'set data type
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
,因此其中的代码将运行。我将手表添加到所有变量中,它们的行为都符合预期。当最后一行运行时,什么也不会发生。超级奇怪。而且你的代码中没有关于“下一步继续”的错误?