我的问题是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。
这就是我使用的,稍微清理了你的代码,但保持了最像你的样子,这样很容易理解错误可能在哪里:
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。希望这可以帮助您了解哪里出了问题,但如果这对您不起作用,请告诉我。