Excel VBA:用于长距离的每个循环
我正在为Excel工作簿中的每个循环使用一些VBA,由于某种原因,在循环到达32766行后,我得到了一个运行时错误。我认为这是一个Int/Long类型错误,但我似乎不知道如何修复它。以下是我当前的代码:Excel VBA:用于长距离的每个循环,vba,excel,Vba,Excel,我正在为Excel工作簿中的每个循环使用一些VBA,由于某种原因,在循环到达32766行后,我得到了一个运行时错误。我认为这是一个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 AudioF
' 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
因为我在研究范围,我想可能有一种特殊类型的变量用于Int范围和Long范围,但是在做了大量的在线研究之后,我找不到任何东西
任何帮助都是非常感谢的,我很乐意帮助澄清任何不清楚的地方 您面临的问题与范围或迭代范围无关。这是因为可以添加到工作表中的超链接字段数量有限。限制在65530左右。因为每次迭代添加两个超链接,所以最大值为32766
您可以通过让工作表单击事件触发一些代码来解决这个问题,这些代码使用target.range动态创建URL,就像这个循环所做的那样,并将用户发送到那里。这不是一个很好的解决方法,但考虑到Excel的局限性,这是您能做的最好的方法。您没有在任何地方声明
firstRow
或lastRow
。首次使用时,这些变量可能会被解释为整数变量
将这些显式声明为Long
,您应该不会有问题
在每个模块的顶部也使用
选项Explicit
是一个好主意-这迫使您显式声明所有变量,这样就不会发生这种类型的错误。这很有意义,因为我花了几个小时绞尽脑汁想弄清楚这一点。所以我的电子表格是一个电话记录,每一行代表一个电话。两个超链接中的一个用作收听音频文件的方式,另一个启动单独的宏用户窗体。我可能只是使用65530链接作为“Play call”链接,然后想出一些代码在每一行插入宏按钮以启动userform。为什么会存在这种限制?我强烈建议在双击()之前使用工作表
事件,而不是使用宏按钮。您可以通过在VB/宏编辑器中双击工作表来使用它。然后使用编写代码区域顶部的下拉列表,选择“工作表”和“双击前”。变量Target
将保存用户双击的范围/单元格。你可以使用它格式化你的URL,然后在任何程序中打开它。我有,只是没有在这个代码snipit中。我真的很感谢大家的意见,@citizenkong。