求用VBA求在一个字符串里找出最后一个指定字符的位置 如以下

PRADA Plaza 66-DONA - P66TD
求最后一个“-”的位置 如果指定字符“-”只有一个 就求出那一个的位置

你如果要找出全部“-”号并在其前后加空格,用字符串替换函数就行了
s="PRADA Plaza 66-DONA-P66TD"
s=Replace(s,"-"," - ")
运行上面两句后,s就就字符串"PRADA Plaza 66 - DONA - P66TD"
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-21
instrRev("PRADA Plaza 66-DONA - P66TD","-")追问

你好,我要截取后面一个“-”,请问有什么办法,或者是三个字符“ - ”的位置(-前后加一个空格符)

追答

你的问题是求最後一个"-"的位置,我上面写的有问题吗?

追问

不好意思啊 我当成InStr这个函数了

请问和instrRev有什么区别啊

追答

InStr从前往后找
instrRev从后往前找

追问

不好意思啊,又麻烦你一下 假如有4个 我要找第3个“-”的位置怎么找

追答Sub ttt(s$)
Dim p%, i%
    p = InStr(p + 1, s, "-")
    i = 1
    Do While p > 0
        MsgBox "第" & i & "个""-""的位置:" & p
        p = InStr(p + 1, s, "-")
        i = i + 1
    Loop
End Sub

上面的代码列出所有“-”的位置,请参考。

追问

谢谢啊!不过那个s是什么变量啊,还有开头一般都是sub ttt( ) 为什么你那不一样了

追答

s是字符串,用法:ttt("PRADA Plaza 66-DONA - P66TD")

追问

谢谢了,第一次见识到可以把字符串直接写到sub的括号里

还有一个问题拜托你了,我想精确查找某个字符串在工作表的行号,比如就"p66"这个字符串。要求找到第一个和最后一个的位置,拜托你了。

不好意思啊,初学vba好多问题都不懂,给你添麻烦了

追答

你的问题还真是没完没了了...不能新开一个问题吗?

追问

呵呵,新开一个问题,我怕没有人能详细回答我问题了。拜托了,到时候给你加分。

追答Sub t1(s$)
Dim c As Range, firstAddress$, cc$
    With ActiveSheet.UsedRange
        Set c = .Find(s, LookIn:=xlValues)
        If Not c Is Nothing Then
            MsgBox "第一个位置:" & c.Address
            firstAddress = c.Address
            Do
                If c.Address <> firstAddress Then cc = c.Address
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
            MsgBox "最后一个位置:" & cc
        End If
    End With
End Sub

用法:t1("p66")

本回答被提问者采纳
相似回答