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函数的语法有这些参数:

  1. 开始 (可选)。 设置每个search起始位置的数字expression式。 如果省略,则search从第一个字符位置开始。 如果start包含Null,则会发生错误。 如果指定了比较,则需要启动参数。
  2. string1 (必需)。 正在searchstringexpression式
  3. string2 (必需)。 寻求stringexpression。
  4. 比较 (可选)。 指定string比较的types。 如果比较为空,则会发生错误。 如果省略比较,则选项比较设置确定比较的types。 在比较中指定一个有效的LCID(LocaleID)以使用特定于语言环境的规则

所以在你的情况下,你需要扭转你的variables。

 SearchPos = InStr(1, theHyperLink.Address, SearchFor, vbTextCompare)