繁体   English   中英

VBA InStr始终返回0

[英]VBA InStr always returning 0

我正在使用Excel 2010,并尝试创建一个函数,该函数将替换工作表中的部分链接,具体取决于用户的输入。 更具体地说,我尝试替换链接以匹配用户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

我已经尝试调试代码,并在处添加了一个断点

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. 开始 (可选)。 数值表达式,用于设置每次搜索的起始位置。 如果省略,则从第一个字符位置开始搜索。 如果start包含Null,则会发生错误。 如果指定了compare,则start参数是必需的。
  2. 字符串1 (必填)。 正在搜索字符串表达式。
  3. string2 (必填)。 寻求字符串表达式。
  4. 比较 (可选)。 指定字符串比较的类型。 如果compare为Null,则会发生错误。 如果省略了比较,则“选项比较”设置将确定比较的类型。 指定一个有效的LCID(LocaleID)以在比较中使用特定于语言环境的规则

因此,在您的情况下,您需要反转变量。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM