rch*_*av9 2 excel vba excel-vba
我正在使用Excel工作簿中的一些VBA For Each循环,由于某种原因,我的循环到达32,766行后出现运行时错误.我认为这是一个Int/Long类型错误,但我似乎无法弄清楚如何解决它.这是我目前的代码:
' Add Play Call hyperlinks
Dim Rng As Range, Cell As Range
Dim FileName As String
Dim Bureau As String
Dim CopiedFilesDirectory As String
Dim AudioFilePath As String
lastRow = Sheets("CallLog").Range("I" & Rows.Count).End(xlUp).Row
Set Rng = Sheets("CallLog").Range("I" & firstRow & ":I" & lastRow)
For Each Cell In Rng
FileName = Range("I" & Cell.Row).Value
MatterNumber = Replace(Range("K" & Cell.Row).Value, "/", "-")
ContactUsername = Range("M" & Cell.Row).Value
Bureau = Range("N" & Cell.Row).Value
CopiedFilesDirectory = ImportCallsUserForm.CopyFilesDirectoryTextBox.Value
AudioFilePath = CopiedFilesDirectory & Bureau & "\" & ContactUsername & "\" & MatterNumber & "\" & FileName & ".flac"
With Worksheets("CallLog")
.Hyperlinks.Add Anchor:=.Range("S" & Cell.Row), _
Address:=AudioFilePath, _
ScreenTip:="Click to play call", _
TextToDisplay:="Play Call"
.Hyperlinks.Add Anchor:=.Range("T" & Cell.Row), _
Address:="", _
ScreenTip:="Click to write a summary", _
TextToDisplay:="Write Call Summary"
End With
Next Cell
Run Code Online (Sandbox Code Playgroud)
由于我正在使用范围,我认为可能有一个特殊类型的变量用于Int Ranges vs. Long Ranges,但在进行广泛的在线研究后我找不到任何东西.
任何帮助总是受到赞赏,我很乐意帮助澄清任何不清楚的事情.
您遇到的问题与Range无关或迭代它.这是由于您可以添加到工作表中的超链接字段数量的限制.限制大约是65530.由于每次迭代添加两个超链接,因此最大值为32766.
您可以通过使用worksheet_click事件触发一些使用target.range来动态创建URL的代码来解决这个问题,就像这个循环正在做的那样,并将用户发送到那里.这不是一个很好的解决方法,但鉴于Excel的局限性,它是你能做的最好的.