gpt4 book ai didi

excel - VBA 错误函数 InstrRev = Instr

转载 作者:行者123 更新时间:2023-12-02 09:34:20 25 4
gpt4 key购买 nike

我一直在尝试从文件结构中查找扩展名,为此我很难使用 InstrRev(filename, ".") 但它不是返回 4,而是返回 30,与 Instr 的方式相同.. .

有人知道一个奇怪的错误会导致 Excel 向两个相反的函数给出相同的结果吗?

亲切的问候,丹尼尔

最佳答案

InstrInstrRev 之间的区别在于它寻找某个子字符串的方向。 Instr 是从头到尾查找,而 InstrRev 是从字符串的末尾到开头查找。结果字符位置始终从字符串的开头开始计算(从左到右)。

我猜在您的示例中,您的路径中只有一个 ".",这就是结果相同的原因。

让我们考虑一个情况,您正在寻找“Clean”文件名,因此您正在寻找最后一个\,那么您会发现InStrRev函数非常有用(例如,请参阅下面的代码)。

对于您的情况:如果您想查找扩展名,假设结果是 31,则使用 Mid 函数:

ExtensionStr = Mid(FullName, dotRes + 1, Len(FullName) - dotRes) ' < --- returns "xlsm"  

(dotRes = 31,ExtensionStr 是表示干净扩展名称的字符串)

<小时/>

代码示例

Sub Instr_InstrRev()

Dim instrRes As Variant
Dim instrRevRes As Variant
Dim dotRes As Variant
Dim ExtensionStr As String
Dim FullName As String

FullName = "C:\Users\Radoshits\Desktop\SO2.xlsm"
instrRes = InStr(FullName, "\") ' <-- returns 3
instrRevRes = InStrRev(FullName, "\") ' <-- returns 27

' to answer your post how to find the "clean" extension name
dotRes = InStr(FullName, ".") ' <-- returns 31
ExtensionStr = Mid(FullName, dotRes + 1, Len(FullName) - dotRes) ' < --- returns "xlsm"

End Sub

关于excel - VBA 错误函数 InstrRev = Instr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41159494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com