Instr()中的溢出错误

Jul*_*ius 4 excel vba

我仍然试图从网页中获取一些数据,我得到了一个解决方法,如何"grep"HTML文本,但现在我试图将一些部分与此文本中的字符串分开.

我想取出变量A和变量B之间的一部分,并使用以下代码.

我总是得到一个Runtime error 6 Overflow,有人知道我为什么以及如何解决这个问题?

Sub Button1_Click()

   Const HTTPREQUEST_PROXYSETTING_PROXY = 2    
   Dim oRequest As Object, pagetext, third As String, first, second As Integer

   Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")    
   oRequest.Open "GET", "http://www.vodafone.de/privat/handys-tablets-tarife/smartphone-tarife.html"

   oRequest.Send    
   pagetext = oRequest.ResponseText    

   first = InStr(pagetext, "window.phones")
   second = InStr(first + 1, pagetext, "window.propositions")
   third = Mid(pagetext, first + 1, second - first - 1)

   MsgBox (third)

End Sub
Run Code Online (Sandbox Code Playgroud)

小智 8

更改从申报IntegerLongsecond变量.

Integertype可以保存最多32,767的数字,而表达式(154031)返回的值大于该值.Long数据类型可以容纳最多2,147,483,647的数字,因此它更适合您的特定情况.

通常,VBA将所有这些转换IntegersLong这些天,因此Long默认情况下将变量调暗为更好的做法.

另外,在一行中调暗多个变量时也要小心,因为

 Dim oRequest As Object, pagetext, third As String, first, second As Integer
Run Code Online (Sandbox Code Playgroud)

first是一个Variant,second是一个Integer

它应该是

Dim oRequest As Object, pagetext, third As String, first as Long, second As Long
Run Code Online (Sandbox Code Playgroud)