用VBA修剪问题

时间:2016-04-20 15:11:29

标签: excel vba excel-vba trim

因此下面的代码有时会工作,有时它会添加&符号(到复制缓冲区),我试图从文本字符串中删除。

代码的要点是将字符串从正确位置复制到&符号之前。但是,在随机情况下,它仍会添加&符号。

Private Sub Block1_Enter()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim MyData As New DataObject
    Dim this As String
    Dim oldxt As String
    oldtxt = Block1.Text
    If InStr(Block1.Text, "&") > 0 Then
        this = Trim(Right(Block1.Text, InStr(Block1.Text, "&") - 1))
        Block1.Text = "End Date Copied" & this
        MyData.SetText this
        MyData.PutInClipboard
        Application.Wait (Now + #12:00:02 AM#)
        Block1.Text = oldtxt
    End If
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

有人可以试着解释为什么它有时会起作用,有时却不行吗?下面是一个图像,其中包含两个无法正常工作的示例

(注意澄清:下面显示的文本框值是来源值,而不是结果)

enter image description here

2 个答案:

答案 0 :(得分:3)

改为使用Mid$()

this = Trim$(Mid$(Block1.Text, InStr(Block1.Text, "&") +  1))

答案 1 :(得分:1)

您目前正在从字符串的左侧获取&的位置,然后使用此数字从字符串的右侧获取日期;相反,您应该从字符串的Instr中减去&的{​​{1}}值,以获取剩余的字符。试试这个:

Len

这些日期特别是错误的原因是因为第二个日期的字符长度比第一个日期的字符长度短。