变量仅在第二次运行宏后才获取值

问题描述 投票:0回答:1

我的问题是variable1没有得到“1”值。我已经多次检查过所调查的单元格包含“1111”值。如果我第二次运行宏,变量 1 会得到“1”值,但第一次永远不会。正确的工作簿和工作表被激活(已检查) . Variable1 是整数并且是公共的。该代码也已经在模块和工作簿中尝试过。

可能是什么问题?谢谢提前!

variable1 = 0

Workbooks.Open "workbook1.xlsx"

Workbooks("workbook1.xlsx").Activate

Workbooks("workbook1.xlsx").Worksheets("sheet1").Activate

For i = 1 To 300
    If Cells(i, 2) = "1111" Then
    variable1 = 1
    Else
    End If
Next i

If variable1 = 1 Then
    GoTo xxx
Else
End If

还在for循环中尝试了以下方法,但结果是相同的:

Workbooks("workbook1.xlsx").Worksheets("sheet1").Cells(i, 2)

如果我手动打开“workbook1.xlsx”,然后运行宏,结果就可以了。

我也尝试过打开工作簿后等待5秒,但结果是NOK。

excel vba for-loop variables
1个回答
0
投票

这就是我使用的,稍微清理了你的代码,但保持了最像你的样子,这样很容易理解错误可能在哪里:

Option Explicit
Public variable1 As Integer
Sub test()
    variable1 = 0
    Dim wb As Workbook
    Set wb = Workbooks.Open(Filename:="Q:\Test\TestFile.xlsx") 'change this to your actual path
    Dim i As Long
    With wb.Worksheets("Sheet1") 'change as needed
        For i = 1 To 300
            'Debug.Print .Cells(i, 2).Value 'for checking the values while testing
            If .Cells(i, 2).Value = "1111" Then
                variable1 = 1
            End If
        Next i
    End With
        
    If variable1 = 1 Then
        GoTo xxx
    End If
    Debug.Print "Alas, no success :c"
    Exit Sub
xxx:
    Debug.Print "Success!"
End Sub

我在 B 列中隐藏了 2 1111 作为数字,并在下面隐藏了一个“1111”(文本),当它找到文本“1111”时,它直接转到 xxx。希望这可以帮助您了解哪里出了问题,但如果这对您不起作用,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.