我需要帮助处理为我编写的代码。代码如下。我工作的时间大概是70%,但每次约20行它会抛出
运行时错误70:拒绝权限
导致这种情况的原因是什么?有什么问题吗?另外,如何更改代码以跳过此类错误(或类似错误),然后转到下一行。
调试器抛出一行:If btn.ID = "gs_hdr_tsb" Then
完整的脚本如下。
Dim ie As Object
Private Sub CommandButton1_Click()
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate TextBox1.Text
Do
DoEvents
Loop Until ie.readystate = 4
Application.Wait (Now + TimeValue("00:00:02"))
End Sub
Private Sub CommandButton2_Click()
Dim i As Long
Dim prfl As String
Dim ws As Worksheet
Set ws = ActiveSheet
Dim INPTTG, btn As Object
Dim Profile_link As String
Dim H3tg As Object
Dim iedata As Object
If iedata Is Nothing Then
Set iedata = CreateObject("InternetExplorer.Application")
End If
iedata.Visible = True
For i = TextBox2.Text To TextBox3.Text
prfl = ws.Range("E" & i).Value
For Each INPTTG In ie.document.getelementsbytagname("input")
If INPTTG.classname = "gs_in_txt" Then
INPTTG.Value = ""
INPTTG.Value = prfl
Exit For
End If
Next INPTTG
'button
Application.Wait (Now + TimeValue("00:00:02"))
For Each btn In ie.document.getelementsbytagname("button")
If btn.ID = "gs_hdr_tsb" Then
btn.Click
Do
DoEvents
Loop Until ie.readystate = 4
Application.Wait (Now + TimeValue("00:00:02"))
End If
Next btn
'prfl
For Each H3tg In ie.document.getelementsbytagname("h3")
If H3tg.classname = "gsc_oai_name" And VBA.Trim(H3tg.innertext) = prfl Then
Call GetData(H3tg.getelementsbytagname("a").Item(0).href, iedata, i)
Exit For
End If
Next H3tg
TextBox2.Text = i
Next i
MsgBox "Completed"
iedata.Quit
Set iedata = Nothing
Application.DisplayAlerts = False
ThisWorkbook.Save
End Sub
非常感谢任何帮助。
答案 0 :(得分:0)
试试这个。
function rand_not_zero($arr) {
$rand_key = array_rand($arr);
$result = $arr[$rand_key];
if (!$result)
$result = rand_not_zero($arr);
return $result;
}
$array = array($a, $b, $c, $d, $e);
echo rand_not_zero($array);
答案 1 :(得分:0)
关于此VB错误,StackOverflow上有多个答案。每个答案或情况在现实中都是唯一的-尽管每个现有答案都指出了不同的潜在根本原因(文件权限,文件夹权限,名称重用,范围等)。
我建议双击表示功能/代码的一侧以缩小根源,以标记断点(看起来像一个红点)(或者,您可以右键单击代码行) -选择Breakpoint
,然后选择F8
)。
接下来,运行您的代码,它将在您的断点处停止。然后,您可以单步执行/移入/移出代码,并从根本上找到负责引发错误代码的代码行。 (进入Shift+F8
,进入Debug
(进入{{1}}顶部菜单以查看更多选项))
确定了负责的代码行后,您就可以开始进一步查找了。
在我的情况下,我使用的是受保护的变量名称“ Date”(查找variable names)。将其重命名为其他名称后,问题已解决。