VBA InStr总是返回0
我正在使用Excel 2010,并尝试使用取代用户input来replaceWorksheet中的部分链接的function。 更具体的我试图取代链接来匹配用户Dropbox的位置。
这是迄今为止的代码
Private Sub CommandButton1_Click() Dim DropboxFolder As String Dim SearchFor As String Dim SearchPos As Integer SearchFor = "Dropbox" With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False .Show On Error Resume Next DropboxFolder = .SelectedItems(1) For Each theHyperLink In ActiveSheet.Hyperlinks SearchPos = InStr(0, SearchFor, theHyperLink.Address, vbBinaryCompare) theHyperLink.Address = DropboxFolder Next Err.Clear On Error GoTo 0 End With End Sub
我已经尝试了一个debugging代码,并添加了一个断点
SearchPos = InStr(0, SearchFor, theHyperLink.Address, vbBinaryCompare)
SearchFor是"Dropbox"
,TheHyperLink.Address是"..\Dropbox\Salgdanmarks Salgsakademi\1\Ny Microsoft Word Document.docx"
但是SearchPos设置为0
我究竟做错了什么?
我意识到这些评论是暂时的,所以我把这个作为答案。 这将有助于未来的访问者。
Instr
的语法是
InStr([start, ]string1, string2[, compare])
InStr函数的语法有这些参数:
- 开始 (可选)。 设置每个search起始位置的数字expression式。 如果省略,则search从第一个字符位置开始。 如果start包含Null,则会发生错误。 如果指定了比较,则需要启动参数。
- string1 (必需)。 正在searchstringexpression式
- string2 (必需)。 寻求stringexpression。
- 比较 (可选)。 指定string比较的types。 如果比较为空,则会发生错误。 如果省略比较,则选项比较设置确定比较的types。 在比较中指定一个有效的LCID(LocaleID)以使用特定于语言环境的规则
所以在你的情况下,你需要扭转你的variables。
SearchPos = InStr(1, theHyperLink.Address, SearchFor, vbTextCompare)