Excel VBA:适用于长范围的每个循环

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,但在进行广泛的在线研究后我找不到任何东西.

任何帮助总是受到赞赏,我很乐意帮助澄清任何不清楚的事情.

JNe*_*ill 5

您遇到的问题与Range无关或迭代它.这是由于您可以添加到工作表中的超链接字段数量的限制.限制大约是65530.由于每次迭代添加两个超链接,因此最大值为32766.

您可以通过使用worksheet_click事件触发一些使用target.range来动态创建URL的代码来解决这个问题,就像这个循环正在做的那样,并将用户发送到那里.这不是一个很好的解决方法,但鉴于Excel的局限性,它是你能做的最好的.